使用Android Studio打开:

 

 

 选中项目新建模块:

 

 

 填写相关模块名称:

 

 

 注意包名:

 

目录中多出一项:

 

 

 新建Java Class:

 

 

 

 

 

 

导入相关包:
import io.dcloud.feature.uniapp.annotation.UniJSMethod;
import io.dcloud.feature.uniapp.bridge.UniJSCallback;
import io.dcloud.feature.uniapp.common.UniModule;

public class main extends UniModule {
    UniJSCallback cb;

    @UniJSMethod(uiThread = false)
    public void foo(UniJSCallback cb){
        this.cb = cb;
        
    }
}

 

 

 

 

 

 

找到:
//consumer-rules.pro
-keep public class * extends io.dcloud.feature.uniapp.common.UniModule{*;}
//proguard-rules.pro
-keep public class * extends io.dcloud.feature.uniapp.common.UniModule{*;}

 

 

 添加:

 

 

 

添加相关依赖:
repositories {
    flatDir {
        dirs 'libs'
    }
}
dependencies {
     compileOnly fileTree(dir: 'libs', include: ['*.jar'])
    compileOnly fileTree(dir: '../app/libs', include: ['uniapp-v8-release.aar'])
    compileOnly 'androidx.recyclerview:recyclerview:1.0.0'
    compileOnly 'androidx.legacy:legacy-support-v4:1.0.0'
    compileOnly 'androidx.appcompat:appcompat:1.0.0'
    implementation 'com.alibaba:fastjson:1.1.46.android'
    implementation 'com.facebook.fresco:fresco:1.13.0'
}
// implementation project(path: ':updater')//填写项目名称

 

 

 

编辑插件内容:
public class Main extends UniModule {
    UniJSCallback callback;
    
        @UniJSMethod(uiThread = false)
        public void foo(String url, UniJSCallback callback) {
            this.callback = callback;
            try {
                callback.invoke("return ->"+url);
            } catch (Throwable throwable) {
                throwable.printStackTrace();
            }
        }
}

 

 

注意:
mUniSDKInstance.getContext(); //用于代替context 需要继承 extends UniModule
callback.invoke("result");//用于返回数据
uniapp向android传参:
param为参数

页面跳转获取参数:
static final int REQUEST_CODE = 1000;
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
        intent.setType("*/*");//无类型限制
        intent.addCategory(Intent.CATEGORY_OPENABLE);
((Activity)mUniSDKInstance.getContext()).startActivityForResult(intent, REQUEST_CODE);


@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
   if(requestCode == REQUEST_CODE && data.hasExtra("respond")) {
       Log.e("TestModule", "原生页面返回----"+data.getStringExtra("respond"));
   } else {
       super.onActivityResult(requestCode, resultCode, data);
   }
}

 

 

uniapp项目目录下面新建:nativeplugins文件夹,创建插件同名文件夹,然后创建android文件夹,把插件复制进去、添加package.json文件: 目录结构:

 

 

 注意:package.json文件class为插件包名.类名的形式、插件名称要和文件夹名称一致

 

 

 添加插件:

 

 使用插件:

 

 

// let plugin = uni.requireNativePlugin('VideoThumbnail');
// try {
//     plugin.retrieve('http://a.laremehpe.xyz/resource/video.mp4',(res) => {
//         uni.showModal({
//             content: JSON.stringify(res)
//         })
//     })
// } catch (e) {
//     uni.showModal({
//         content: 'error' + JSON.stringify(e)
//     })
// }

 

 posted on 2022-11-10 14:53  laremehpe  阅读(1)  评论(0编辑  收藏  举报