小程序申请系统权限
在使用小程序时,部分小程序 API 除需要申请小程序授权外,还需要申请对应的 Android 系统权限方可正常使用。SDK 默认会在使用这些 API 时自动弹窗向用户申请系统权限。您可以在初始化 SDK 时设置禁用自动权限申请,但是宿主 App 需要自行申请这些系统权限以保证小程序接口能够正常运行。
@ProxyService(proxy = MiniConfigProxy.class)
public class MiniConfigProxyImpl extends MiniConfigProxy {
@Override
public Application getApp() {
return "app Application";
}
@Override
public MiniInitConfig buildConfig() {
MiniInitConfig.Builder builder = new MiniInitConfig.Builder();
MiniInitConfig config = builder
.configAssetName("tcmpp-android-configurations.json")
.imei("IMEI")
.autoRequestPermission(false)
.debug(true)
.build();
}
}
自定义系统权限申请
通过重写 IPermissionManagerProxy 接口,可以拦截小程序申请 Android 系统权限的事件并自定义权限申请逻辑。IPermissionManagerProxy 接口包含3个方法:isPermissionGranted 方法用于小程序检测宿主是否拥有某个系统权限;requestForPermission 和 requestForPermissions 方法用于小程序通知宿主申请某个或者某一组权限。
注意:
自定义系统权限申请后,初始化配置中的 autoRequestPermission 将不再生效。
@ProxyService(proxy = IPermissionManagerProxy.class)
public class PermissionProxyImpl implements IPermissionManagerProxy {
@Override
public boolean isPermissionGranted(Context context, String permission) {
return ContextCompat.checkSelfPermission(context, permission) == PackageManager.PERMISSION_GRANTED;
}
@Override
public void requestForPermission(Activity activity, String permission, RequestPermissionCallback callbacks) {
Toast.makeText(activity,"正在申请 " + permission + " 权限", Toast.LENGTH_LONG).show();
}
@Override
public void requestForPermissions(Activity activity, String[] permissions, RequestPermissionCallback callbacks) {
Toast.makeText(activity,"正在申请 " + permissions[0] + " 等权限", Toast.LENGTH_LONG).show();
}
}
interface RequestPermissionCallback {
void onSuccess();
void onFail(String[] rejected);
}
本页内容是否解决了您的问题?