uni-app中plus.android.importClass导入java类失败
uni-app中plus.android.importClass导入java类失败
问题描述
离线打包的安卓项目,其中自定义了一个java类,想在uniapp中调用
以下是我的java类
package com.map;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
public class offlineMap extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
startActivity(new Intent(this.getApplicationContext(),
com.amap.api.maps.offlinemap.OfflineMapActivity.class));
}
}
以下为uniapp中调用
var main = plus.android.runtimeMainActivity();
var Intent = plus.android.importClass('android.content.Intent');
console.log('intent',Intent);
var MyActivity = plus.android.importClass('com.map.offlineMap');
console.log('MyActivity',MyActivity);
var intent = new Intent(main, MyActivity.class);
main.startActivity(intent);
然后控制台输出
16:52:57.940 [Vue warn]: Error in v-on handler: "TypeError: Cannot read property 'class' of null"
16:52:58.002 (found at pages/map/history.vue:1)
16:52:58.033 TypeError: Cannot read property 'class' of null
请问这个是什么原因??
更多关于uni-app中plus.android.importClass导入java类失败的实战教程也可以访问 https://www.itying.com/category-93-b0.html
2 回复
用intent.setClassName 别用.class适配问题
更多关于uni-app中plus.android.importClass导入java类失败的实战教程也可以访问 https://www.itying.com/category-93-b0.html
问题出在plus.android.importClass('com.map.offlineMap')返回了null,导致访问.class属性时出错。
原因分析:
- 类路径问题:确保Java类
com.map.offlineMap在离线打包的Android项目中正确定义,包名和类名与导入路径完全一致。 - 类未正确导出:检查自定义Java类是否已正确编译到APK中,且未被ProGuard混淆。
- Activity类导入方式:
plus.android.importClass通常用于导入静态类或非Activity类。对于Activity,建议直接使用Intent启动。
解决方案: 修改调用代码,直接通过Intent启动Activity,无需导入类:
var main = plus.android.runtimeMainActivity();
var Intent = plus.android.importClass('android.content.Intent');
var intent = new Intent();
// 使用显式Intent设置组件
intent.setClassName(main.getPackageName(), 'com.map.offlineMap');
main.startActivity(intent);

