ACT_Meteor
ACT_Meteor
  • 发布:2024-12-12 18:50
  • 更新:2024-12-12 18:52
  • 阅读:88

参考的文档

使用的第三方SDK链接

参考教程链接

目的实现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

而且已经尝试再次生成 自定义调试基座包 但仍然会报错,求解决办法!!!!

2024-12-12 18:50 负责人:无 分享
已邀请:
ACT_Meteor

ACT_Meteor (作者)

问题解决了,再添加Binder代码之后需要再次 自定义调试基座包 希望后续能增加提示,这个问题调了一天了 :(

要回复问题请先登录注册