|
[插件开发]
模块开发中电话相关权限动态申请问题
[复制链接]
我在模块开发中动态申请了 Manifest.permission.ANSWER_PHONE_CALLS 的权限,用于实现挂断电话功能,用模块开发测试没问题。
在模块中用
- ActivityCompat.requestPermissions(mContext, new String[] {Manifest.permission.ANSWER_PHONE_CALLS}, PERMISSIONS_ANSWER_PHONE_CALLS);
复制代码 动态申请的权限
但是打包成模块发布到apicloud以后就无法申请到这个权限了,有没有大神能帮忙解惑一下。
在apicloud中也通过 api.requestPermission 申请了 phone 的权限,但不起作用。
模块中完整代码如下
- public void jsmethod_endCall(UZModuleContext moduleContext) throws JSONException {
- boolean callSuccess = false;
- String msg = "";
- try {
- if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.P) {
- // >=Android 9,需打开 Manifest.permission.ANSWER_PHONE_CALLS 权限
- TelecomManager telecomManager = (TelecomManager) mContext.getSystemService(Context.TELECOM_SERVICE);
- if (ActivityCompat.checkSelfPermission(mContext, Manifest.permission.ANSWER_PHONE_CALLS) != PackageManager.PERMISSION_GRANTED) {
- // TODO: Consider calling
- // ActivityCompat#requestPermissions
- ActivityCompat.requestPermissions(mContext, new String[] {Manifest.permission.ANSWER_PHONE_CALLS}, PERMISSIONS_ANSWER_PHONE_CALLS);
- // here to request the missing permissions, and then overriding
- // public void onRequestPermissionsResult(int requestCode, String[] permissions,
- // int[] grantResults)
- // to handle the case where the user grants the permission. See the documentation
- // for ActivityCompat#requestPermissions for more details.
- msg = "telecomManager checkSelfPermission Manifest.permission.ANSWER_PHONE_CALLS";
- } else {
- callSuccess = telecomManager.endCall();// 提示信息
- msg = "telecomManager.endCall() finish";
- }
- } else {
- Method method = Class.forName("android.os.ServiceManager")
- .getMethod("getService", String.class);
- IBinder binder = (IBinder) method.invoke(null, new Object[]{mContext.TELEPHONY_SERVICE});
- ITelephony telephony = ITelephony.Stub.asInterface(binder);
- telephony.endCall();
- callSuccess = true;
- msg = "telephony.endCall() finish";
- }
- msg += android.os.Build.VERSION.SDK_INT + ":" + android.os.Build.VERSION_CODES.LOLLIPOP;
- } catch (Exception e) {
- msg = "Exception error: " + e.getMessage();
- callSuccess = disconnectCall();
- e.printStackTrace();
- }
- JSONObject ret = new JSONObject();
- ret.put("status", callSuccess);
- ret.put("msg", msg);
- moduleContext.success(ret, true);
- }
复制代码
|
|