参考的文档
目的实现Shizuku调用
已经做的事情
根据 SDK文档在config.json添加了dependencies依赖
{
"minSdkVersion": "24",
"dependencies": [
"dev.rikka.shizuku:api:13.1.5",
"dev.rikka.shizuku:provider:13.1.5"
]
}
根据demo代码实现了UTS中的initShizuku函数
export function initShizuku() {
Shizuku.addBinderReceivedListenerSticky(() => {
if (Shizuku.isPreV11()) {
toast("Shizuku pre-v11 不支持");
} else {
toast("Binder 已开启");
}
});
Shizuku.addBinderDeadListener(() => {
toast("Binder 被终止");
});
Shizuku.addRequestPermissionResultListener((param0: number, param1: number) => {
toast(`Permission result - param0: ${param0}, param1: ${param1}`);
});
toast("initShizuku运行完成");
}
然后尝试申请Shizuku权限
//申请权限
export function requestShizukuPermission() {
if (Shizuku.isPreV11()) {
Toast.makeText(Activity, "当前shizuku版本不支持动态申请权限", Toast.LENGTH_SHORT).show();
return;
}
if (Shizuku.checkSelfPermission() !== null) {
Toast.makeText(Activity, "已拥有Shizuku权限", Toast.LENGTH_SHORT).show();
return;
}
// 动态申请权限
Shizuku.requestPermission(10002);
}
得到报错
Error: targetMethod error::java.lang.IllegalStateException: binder haven't been received
我翻SDK的Binder文档然后看到必须添加 Shizuku.addBinderReceivedListener
单我将代码的 Shizuku.addBinderReceivedListenerSticky 改为 Shizuku.addBinderReceivedListener ,但依旧会报错
并且我已经添加了 AndroidManifest.xml 在UTS插件的目录中
uni_modules/act-shizuku/utssdk/app-android/AndroidManifest.xml
而且已经尝试再次生成 自定义调试基座包 但仍然会报错,求解决办法!!!!
1 个回复
ACT_Meteor (作者)
问题解决了,再添加Binder代码之后需要再次 自定义调试基座包 希望后续能增加提示,这个问题调了一天了 :(