【问题标题】:Cordova #Intent-BroadcastReceiverCordova #Intent-BroadcastReceiver
【发布时间】:2015-04-21 13:52:48
【问题描述】:

首先,我正在使用一些特定的 API(Grand Stream GXV3275 电话),它需要 Intent - BroadcastReceiver 组合断路器。

当我的设备处于横向时,它运行良好,所以问题出在 Intent - BroadcastReceiver。

所以我需要那个 IntentFilter 知道我的 HOOKEVENT,然后用那个 BroadcastReceiver 接收它。

我只想知道为什么它甚至不显示警报或根本不工作。 这可以处理 CordovaPlugin 上的 IntentFilter 吗?使用广播接收器?

我对我的 CordovaActivity 和 HOOKEVENT 做了一些测试;更新文本视图。 所以我认为这是 CordovaPlugin 的问题。

我也尝试过:

CordovaActivity activity = (CordovaActivity) this.cordova.getActivity();
activity.getJs(); 

这通常允许我获得对我的活动有效但给我 NPE 的字符串..

公共类 Toast 扩展 CordovaPlugin {

private String javascript = "";

public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
    initHookEvent();
    switch (action) {
        case "reversed":
            reversedTest();
            return true;
    }
    return false;
}

private Activity getActivity() { return this.cordova.getActivity();}

private void reversedTest(){
   Configuration configuration = getActivity().getResources().getConfiguration();
   if(configuration.orientation == Configuration.ORIENTATION_LANDSCAPE){
       webView.sendJavascript("javascript:document.getElementById(\"combi\").innerHTML=\"Landscape\";");
   }
   webView.sendJavascript(javascript);
}

public void initHookEvent() {
   IntentFilter filter = new IntentFilter("com.base.module.phone.HOOKEVENT");
   getActivity().registerReceiver(broadcastReceiver, filter);
}

public BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
   @Override
   public void onReceive(Context context, Intent intent) {
      webView.sendJavascript("javascript:alert(\"test\");");
      if (intent.getBooleanExtra("hookoff", false)){
         javascript = "javascript:document.getElementById(\"combi\").innerHTML=\"decroche\";";
      }
      else{
         javascript = "javascript:document.getElementById(\"combi\").innerHTML=\"raccroche\";";
      }
   }
};

【问题讨论】:

    标签: javascript android cordova plugins broadcastreceiver


    【解决方案1】:

    我发现自己有问题。

    之后我只为此创建了一个特定的插件。 你只需要:

    webView.sendJavascript("javascript:document.getElementById(\"combi\").innerHTML=\"decroche\";");
    

    还有

    getActivity().getApplicationContext().registerReceiver(broadcastReceiver_hook, filter_hook);
    

    这是我的最终插件:

    public class Hook extends CordovaPlugin {
    
    @Override
    public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
        initHookEvent();
        return false;
    }
    
    
    /**
     * Use to get the current Cordova Activity
     * @return your Cordova activity
     */
    private Activity getActivity() { return this.cordova.getActivity();}
    
    /**
     * Initializing GXV 3275 Hook Event
     * You ABSOLUTELY need to precise getActivity().getApplicationContext()
     * before registerReceiver() otherwise it won't get the good context.
     */
    public void initHookEvent() {
        IntentFilter filter_hook = new IntentFilter("com.base.module.phone.HOOKEVENT");
        getActivity().getApplicationContext().registerReceiver(broadcastReceiver_hook, filter_hook);
    }
    
    /**
     * BroadcastReceiver is also needed with GXV 3275 Hook Event
     * Just sendJavascript for each cases
     *       /!\ webView /!\
     * Is natively created by extending CordovaPlugin
     */
    public BroadcastReceiver broadcastReceiver_hook = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            if ( intent.getBooleanExtra("hookoff", false)){
                webView.sendJavascript("javascript:document.getElementById(\"combi\").innerHTML=\"decroche\";");
                webView.sendJavascript("javascript:document.getElementById(\"combi\").style.opacity = 1;");
            }
            else{
                webView.sendJavascript("javascript:document.getElementById(\"combi\").innerHTML=\"raccroche\";");
                webView.sendJavascript("javascript:document.getElementById(\"combi\").style.opacity = 1;");
            }
        }
    };
    

    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多