Cordova插件调用Android原生Activity
来源:互联网 发布:猎场小说剧情介绍 知乎 编辑:程序博客网 时间:2024/06/05 18:50
cordova 插件想要访问Android原生的Activity
操作如下
步骤1.在生成插件的文件夹中找到自动生成的 plugin.xml文件 配置此文件
步骤2.插件文件夹 src/android/ 文件夹下准备拷贝资源
步骤3.提交插件到cordova 项目
步骤4.提交成功后 在Cordova项目中platforms/android/ 找到对应的代码
1.生成的相应android 清单文件
2.对应的java类
3.插件类中操作
@Override
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
if ("alipay".equals(action)) {
Intent intent=new Intent();
intent.setAction("XXXXXXXXXXXXXXXXXXX");
cordova.getActivity().startActivity(intent);
return true;//返回true
}else if("weixinpay".equals(action)){
Intent intent=new Intent();
intent.setAction("XXXXXXXXXXXXXXXXXXXXXXXXX");
cordova.getActivity().startActivity(intent);
return true;//返回true
}
return false;
}
至此就完成了将原生android代码打包成Cordova插件 并能在Cordova插件中调用android原生代码
注意1.android原生代码 直接拷贝的话 到Corodva插件中 是找不到R.layout.XX 或是R.id.XX 的
解决方法
提供工具类 MResource
public class MResource {
public static int getIdByName(Context context, String className, String resName) {
String packageName = context.getPackageName();
int id = 0;
try {
Class r = Class.forName(packageName + ".R");
Class[] classes = r.getClasses();
Class desireClass = null;
for (Class cls : classes) {
if (cls.getName().split("\\$")[1].equals(className)) {
desireClass = cls;
break;
}
}
if (desireClass != null) {
id = desireClass.getField(resName).getInt(desireClass);
}
} catch (Exception e) {
e.printStackTrace();
}
return id;
}
}
然后Android原生Activity 中
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(MResource.getIdByName(this, "layout", "XXXXX"));
initView();
}
public void initView(){
paytextview= (TextView) findViewById(MResource.getIdByName(this, "id","XXXX"));
paytextview.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
}
这样就解决了导入后R.layout.XX 和R.id.XX 找不到问题了
注意2 插件中跳转Android原生actiivty是 不能直接跳转 隐式跳转
Intent intent=new Intent();
intent.setAction("XXXXXXXXXXXXXXXXXXX");
cordova.getActivity().startActivity(intent);
return true;//返回true
相应的原生Activity 注册时
<activity android:name="com.wjn.paydemo.activity.XXXX">
<intent-filter>
<action android:name="XXXXXXXXXXXXXXXXXXX" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
希望对你有所帮助!!!!
- Cordova插件调用Android原生Activity
- Cordova插件调用Android原生Activity修改其样式及背景
- phonegap跳转Activity android插件调用原生
- cordova 插件中原生调用js
- Cordova通过CordovaPlugin插件调用 Activity
- cordova 插件调用activity和结果返回
- Android移动APP开发笔记——Cordova(PhoneGap)通过CordovaPlugin插件调用 Activity 实例
- Cordova 原生插件编写总结
- Cordova调用Activity
- react native js调用android原生activity
- 调用 cordova 插件 IllegalAccessException
- Cordova插件之原生MD5加密
- Cordova中JavaScript/TypeScript调用原生代码
- Cordova-Android 插件开发
- 自定义Cordova-Android插件
- Android Cordova 插件制作
- [Java学习] Admob原生Android SDK集成Phonegap/Cordova无需插件
- Cordova自定义插件,解决Android混合开发向原生开发的过渡
- 基于jdk1.8的简单性能监控分析
- ARKit从入门到精通(2)-ARKit工作原理及流程介绍
- SVN提交或更新时报错:... is already locked.
- java使用WebUploader做大文件的分块和断点续传
- Shell中实现进度条程序
- Cordova插件调用Android原生Activity
- 浅析分布式系统中的 Linearizability
- 面向过程编程,面向对象编程和面向切面编程理解
- ELK之logstath的使用(3)----filter插件的使用
- AndroidStudio 基础配置总结
- Chrome 控制台实用指南
- 心得(2017-8)
- 安卓的elevation、以及Z值等
- M