首先需要编写一个CallActivityPlugin插件,专门调用Activity
package com.example.plugin; import org.apache.cordova.api.CallbackContext; import org.apache.cordova.api.CordovaPlugin; import org.apache.cordova.api.PluginResult; import org.json.JSONArray; import org.json.JSONException; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.util.Log; public class CallActivityPlugin extends CordovaPlugin { public static final String ACTION = "call"; @Override public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException { if (action.equals(ACTION)) { try { //下面两句最关键,利用intent启动新的Activity Intent intent = new Intent().setClass(cordova.getActivity(), Class.forName(args.getString(0))); this.cordova.startActivityForResult(this, intent, 1); //下面三句为cordova插件回调页面的逻辑代码 PluginResult mPlugin = new PluginResult(PluginResult.Status.NO_RESULT); mPlugin.setKeepCallback(true); callbackContext.sendPluginResult(mPlugin); callbackContext.success("success"); } catch (Exception e) { e.printStackTrace(); return false; } } return true; } //onActivityResult为第二个Activity执行完后的回调接收方法 @Override public void onActivityResult(int requestCode, int resultCode, Intent intent){ switch (resultCode) { //resultCode为回传的标记,我在第二个Activity中回传的是RESULT_OK case Activity.RESULT_OK: Bundle b=intent.getExtras(); //data为第二个Activity中回传的Intent String str=b.getString("change01");//str即为回传的值 break; default: break; } } }
然后配置CallActivityPlugin插件res/xml/config.xml
<plugin name="CallActivityPlugin" value="com.example.plugin.CallActivityPlugin"/>
接着利用js调用插件(callActivity.js)
window.callActivityPlugin = function(str,callback) { cordova.exec(callback, pluginFailed, "CallActivityPlugin", "call", [ str ]); }; var pluginFailed = function(message) { alert("failed>>" + message); } $(function() { init(); }); var init = function() { console.log("phonegap init!!"); document.addEventListener("deviceready", onDeviceReady, true); } var onDeviceReady = function() { console.log("deviceready event fired"); window.callActivityPlugin("com.example.activity.MyActivity" , function(echoValue) { console.log("callActivityPlugin echo>>"); }); };
最后html页面加载(相对简单)
<!DOCTYPE html> <html> <head> <title>Device Properties Example</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <script type="text/javascript" charset="utf-8" src="../js/jquery-1.8.3.js"></script> <script type="text/javascript" charset="utf-8" src="../js/cordova-2.3.0.js"></script> <script type="text/javascript" charset="UTF-8" src="../js/callActivity.js"></script> </head> <body> <p id="callActivityPlugin">callActivityPlugin</p> <a href="../index.html">返回</a> </body> </html>
新的Activity代码(相对简单)
package com.example.activity; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import com.example.ask.R; public class MyActivity extends Activity { private Button btn; private int flag = 0; private Intent intentNew = null; private Context context = this; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.my_activity_main); intentNew = this.getIntent(); btn = (Button) findViewById(R.id.button1); btn.setOnClickListener(new OnClickListener() { public void onClick(View v) { Intent mIntent = new Intent(); mIntent.putExtra("change01", "1000"); mIntent.putExtra("change02", "2000"); // 设置结果,并进行传送 setResult(RESULT_OK, mIntent); finish(); } }); } }
参考文章:https://github.com/phonegap/phonegap-plugins/blob/master/Android/EmailComposerWithAttachments/EmailComposer.java
相关推荐
cordova调用安卓原生activity插件 使用简介 JS端使用方式 //sendData表示要从js端发送到原生activity的数据,需用json对象传输 var sendData = { id:10001, name:"Simon", age:28 }; window.cordova.plugins....
本文件为cordova的一个插件,插件调用了一个Android的服务。服务是通过aidl方式调用的,并且服务被打包成一个jar文件
android集成cordova 并调用h5页面 有两个H5页面
cordova调用微信
cordova跳转原生Activity
实现cordova中html页面和activity之间的数据交互
cordova(phonegap)通过插件,通过js调用oc原生代码,demo
Cordova开发中,插件调用都只能调用本地的html,这个功能就是为了Cordova能调用远程的HTML页面,这样的话,一些逻辑可以放在服务器上,不需要全部打包放在app中,同时远程的html可以调用插件,调用方式同一般的...
调用原生摄像头扫一扫功能cordova插件
cordova插件,调用原生拨号功能,操作说明在readme文件内
实现JS调用后台JAVA,并返回提示信息。在cmd窗口进入解压根目录后,运行cordova run即可看到效果;还可以用android studio导入 platfroms下的android包,点击模拟器运行也可以看到效果。 刚开始导入会提示SDK路径...
在存在iOS项目添加Cordova实现H5调用设备相册
这是一个Cordova插件,用于进入二维码扫描界面并返回扫描结果,可用于Cordova自定义插件的开发的学习,插件直接安装可以正常使用。
phonegao与本地数据交互 调用Activity等 自定义 插件别写 我使用的cordova版本为 3.3.0 我的博客 http://blog.csdn.net/aaawqqq 有详细解析 phonegap 开发流程 希望能帮助大家 谢谢
这个cordova插件是我项目中用到的,其中引用到的库文件是.aar文件,不是通常的jar包,所以有些特别。针对这种特殊aar文件,插件添加完成后需要手动在app的gradle文件中添加以下代码repositories { flatDir { dirs ...
本实例是一个ionic完完整整的工程,并且调用一个自己开发的插件,与插件进行交互。其中插件的内容为调用一个android服务的功能。本例子主要用于我博客的附加源码
cordova自定义插件,实现toast,jar包的调用(利于对第三方jar包调用的理解),native与js的交互,实现android与js的信息回调。
cordova-screenshot cordova截屏插件 document.addEventListener("deviceready", init, false); function init() { document.querySelector("#share").addEventListener("touchend", function() { navigator....
> 此实例代码为 Android Studio 原生项目集成 Cordova 插件演示,而非通过 Cordova 直接编译,方便您在现有 Android Studio 项目中集成 Cordova 进行 H5 混合开发。 为了结构清晰及易维护性,项目分三个 Module ,...
cordova自定义插件,实现toast,jar包的调用(利于对第三方jar包调用的理解),native与js的交互,实现android与js的信息回调。