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属性时出错。

原因分析:

  1. 类路径问题:确保Java类com.map.offlineMap在离线打包的Android项目中正确定义,包名和类名与导入路径完全一致。
  2. 类未正确导出:检查自定义Java类是否已正确编译到APK中,且未被ProGuard混淆。
  3. 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);
回到顶部