首先需要编写一个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 Activity来实现特定功能,例如访问设备硬件或利用原生库。本篇文章将详细介绍如何在Cordova中进行原生Activity的跳转,以及`HjkPlugin`可能涉及的相关知识点。 ...
在 JavaScript 中定义一个函数,该函数调用 `cordova.exec()` 方法,传入服务名、方法名和参数。在 Android 侧,你需要创建一个继承自 `CordovaPlugin` 的类,并重写 `execute()` 方法来处理来自 JavaScript 的请求...
phonegao与本地数据交互 调用Activity等 自定义 插件别写 我使用的cordova版本为 3.3.0 我的博客 http://blog.csdn.net/aaawqqq 有详细解析 phonegap 开发流程 希望能帮助大家 谢谢
本篇文章将深入探讨如何在Cordova项目中开发自定义插件,特别是在Android平台上实现Java(jar包)调用以及与JavaScript之间的交互,从而更好地理解和运用第三方库。 首先,我们来了解一下Cordova插件的基本结构。一...
在标题“Native+WebApp中Phonegap调用Android Activity”中,我们关注的是如何在PhoneGap应用中启动并交互Android的原生Activity。 在Android平台上,Activity是程序的基本单元,用于处理用户交互和展示UI。当...
phonegap调用activity与数据交互 Phonegap 调用本地的Activity插件 我的博客:http://blog.csdn.net/aaawqqq?viewmode=list 查看我上一篇插件开发的文章: ... 本节主要记录调用Activity的方式;...
对于Android,你需要编辑`platforms/android/app/src/main/res/layout/qrscanner_activity.xml`文件,调整相关元素的属性。对于iOS,需要修改`platforms/ios/YourProjectName/Plugins/cordova-plugin-qrscanner/...
- 使用`addJavascriptInterface()`方法可以将Java对象暴露给JavaScript,允许JavaScript代码调用Android原生方法。 7. **挑战与注意事项**: - 确保Fragment生命周期管理正确,因为Fragment和CordovaWebView的...
同时,确保在Activity或Fragment的生命周期方法中正确管理Bitmap。 6. **使用硬件加速**: 启用硬件加速可以帮助处理图像操作,但需注意某些API在硬件加速模式下可能不适用。 7. **利用Android系统的裁剪服务**: ...
本篇文章将深入探讨如何创建并使用Cordova自定义插件,以及如何实现打印吐司(Toast)和启动Activity并传递值给JavaScript的功能。 首先,让我们理解Cordova插件的基本结构。一个Cordova插件通常包含两部分:...
在Cordova中实现这个功能,你需要创建一个插件,接收电话号码作为输入,然后使用`Intent`的`setData()`方法设置电话号码URI,最后调用`startActivity()`来发起电话呼叫。注意,为了安全和隐私,此功能可能需要请求...
6. **调用插件**:在Cordova应用的JavaScript代码中,当用户触发导航需求时,调用`startBaiduNavigation`函数,Cordova插件机制会自动处理剩余的工作,调起原生的Android活动。 通过以上步骤,我们可以实现一个...
在Android开发中,Activity是程序中负责处理用户交互的类,而这个特定的Activity可能用于展示和测试Cordova集成到Android应用中的效果。 深入学习Cordova,你需要掌握以下几个关键知识点: 1. **Cordova架构**:...
在PhoneGap中,通过插件调用Android的Activity,可以使Web应用启动新的功能或者界面,增加应用的交互性和功能性。 首先,配置PhoneGap 2.2插件需要以下步骤: 1. **创建项目**:在Android Studio中创建一个新的...
3. **PhoneGap API**:PhoneGap提供了一系列的API,如`cordova.exec()`函数,用于在JavaScript中调用Android的原生功能。例如,你可以调用`exec()`来访问设备的硬件特性,如摄像头、GPS或文件系统等。 4. **...
【海康威视视频监控android移动端调用】项目是一个基于Android平台的应用,旨在实现对海康威视DS-8116HC DVR设备的视频监控功能。该项目适用于开发者或者有相关需求的用户,通过Android 4.1系统进行运行。在开发过程...
- 在Java的WebSocketListener中,当接收到JavaScript的响应时,可以通过CordovaPlugin的callbackSuccess或callbackError方法将结果返回给Java调用者。 5. **安全性和性能优化**: - 为了保证应用的安全性,应确保...
创建一个隐式Intent,指定ACTION_CALL动作,并附上电话号码作为数据,然后使用`startActivity`方法启动这个Intent。如果需要在原生C++代码中实现,可以通过JNI(Java Native Interface)与Java层交互。首先,定义一...