从CordovaPlugin打开一个活动

我编写了一个CordavaPlugin派生类。

public class ShowMap extends CordovaPlugin { @Override public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException { if (action.compareTo("showMap") == 0) { String message = args.getString(0); this.echo(message, callbackContext); Intent i = new Intent(); return true; } return false; } private void echo(String message, CallbackContext callbackContext) { if (message != null && message.length() > 0) { callbackContext.success(message); } else { callbackContext.error("Expected one non-empty string argument."); } } } 

我想从这堂课开一个新的活动。 如何访问基于phonegap的课程的原始上下文?

  • 设置相机宽度和高度phonegap相机
  • 如何在Android中的PhoneGap的CordovaWebView上叠加原生视图?
  • 状态栏通知插件与cordova错误
  • 在Android的PhoneGap的CordovaWebView之上如何覆盖原生视图?
  • cordovajar在手机3.5.0缺less
  • Phonegap - 将图像从url保存到设备照片库中
  • PhoneGap 3插件:exec()调用未知插件“...”
  • Cordova File Plugin创建的文件的位置在哪里?
  • 试着:

      Context context=this.cordova.getActivity().getApplicationContext(); //or Context context=cordova.getActivity().getApplicationContext(); Intent intent=new Intent(context,Next_Activity.class); context.startActivity(intent); //or cordova.getActivity().startActivity(intent); 

    并确保您已在AndroidManifest.xml注册了Next Activity

    1. 在AndroidManifest文件中注册您的活动
    2. 在你的插件中你应该有这样的代码,注意没有调用“callback.success()”
    3. 在ui线程中运行操作而不是后台线程。
    4. 请享用

       if (action.equals("myaction")) { cordova.getActivity().runOnUiThread(new Runnable() { @Override public void run() { Context context = cordova.getActivity() .getApplicationContext(); Intent intent = new Intent(context, MyNewActivityGap.class); cordova.getActivity().startActivity(intent); } }); return true; } 
     Context context = cordova.getActivity().getApplicationContext(); Intent intent = new Intent(context,Next_Activity.class); cordova.startActivityForResult(this, intent,0); 

    我使用隐式意图去使这个function工作

      Intent i = new Intent("ACTION_PLAY_VIDEO"); this.cordova.startActivityForResult((CordovaPlugin) this,i, 0); 

    不要忘记将intentfilter放在清单文件中的目标活动中

          

    现在在2017年发布,因为它是“cordova插件活动”排名靠前的谷歌搜索结果和最高投票的答案,以及Cordova插件指南都缺少以下关键信息,这花了我很多时间才弄明白… config-file的父属性和特定代码:

    添加到plugin.xml,根据您的需求进行定制:

          

    使用上述包和活动更新启动代码:

     Context context=this.cordova.getActivity().getApplicationContext(); //or Context context=cordova.getActivity().getApplicationContext(); Intent intent=new Intent(context, com.custompackage.MyCustomActivity.class); context.startActivity(intent); //or cordova.getActivity().startActivity(intent); 

    看这个例子。

    首先,您需要在config.xml中声明自定义插件。 您可以在res> xml文件夹中find此文件。

        

    然后,您需要使用Java代码实现插件

     public class CustomPlugin extends CordovaPlugin { @Override public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException { if (action.equals("sayHello")){ try { String responseText = "Hello world, " + args.getString(0); callbackContext.success(responseText); } catch (JSONException e){ callbackContext.error("Failed to parse parameters"); } return true; } return false; } } 

    最后我们从javascript调用一个插件

     function initial(){ var name = $("#NameInput").val(); cordova.exec(sayHelloSuccess, sayHelloFailure, "CustomPlugin", "sayHello", [name]); } function sayHelloSuccess(data){ alert("OK: " + data); } function sayHelloFailure(data){ alert("FAIL: " + data); }