随笔- 191  文章- 0  评论- 3  阅读- 58837 

 使用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   laremehpe  阅读(29)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示