tencent cloud

文档反馈

申请 Android 系统权限

最后更新时间:2024-05-10 11:28:01

    小程序申请系统权限

    在使用小程序时,部分小程序 API 除需要申请小程序授权外,还需要申请对应的 Android 系统权限方可正常使用。SDK 默认会在使用这些 API 时自动弹窗向用户申请系统权限。您可以在初始化 SDK 时设置禁用自动权限申请,但是宿主 App 需要自行申请这些系统权限以保证小程序接口能够正常运行。
    @ProxyService(proxy = MiniConfigProxy.class)
    public class MiniConfigProxyImpl extends MiniConfigProxy {
    /**
    * 应用Application
    * @return
    */
    @Override
    public Application getApp() {
    return "app Application";
    }
    
    /**
    * 创建初始化配置信息
    * @return
    */
    @Override
    public MiniInitConfig buildConfig() {
    MiniInitConfig.Builder builder = new MiniInitConfig.Builder();
    MiniInitConfig config = builder
    .configAssetName("tcmpp-android-configurations.json") //assets中配置文件名称
    .imei("IMEI") //配置设备id,⽤于在管理平台上根据设备标识进⾏⼩程序的灰度发布使⽤(可选)
    .autoRequestPermission(false) //配置小程序使用到需要权限的API时是否自动向用户申请对应的系统权限
    .debug(true) //日志开关,默认关闭的
    .build();
    }
    }

    自定义系统权限申请

    通过重写 IPermissionManagerProxy 接口,可以拦截小程序申请 Android 系统权限的事件并自定义权限申请逻辑。IPermissionManagerProxy 接口包含3个方法:isPermissionGranted 方法用于小程序检测宿主是否拥有某个系统权限;requestForPermission 和 requestForPermissions 方法用于小程序通知宿主申请某个或者某一组权限。
    注意:
    自定义系统权限申请后,初始化配置中的 autoRequestPermission 将不再生效。
    @ProxyService(proxy = IPermissionManagerProxy.class) public class PermissionProxyImpl implements IPermissionManagerProxy { /** * 检查宿主是否拥有某个系统权限 * @param context Android 上下文 * @param permission 待检查的系统权限,参考 android.Manifest.permission 类 * @return 宿主是否拥有权限 */ @Override public boolean isPermissionGranted(Context context, String permission) { return ContextCompat.checkSelfPermission(context, permission) == PackageManager.PERMISSION_GRANTED; } /** * 通知宿主请求系统权限 * @param activity 申请权限的小程序 Activity * @param permission 待申请的系统权限,参考 android.Manifest.permission 类 * @param callbacks 返回权限申请结果给小程序的回调 */ @Override public void requestForPermission(Activity activity, String permission, RequestPermissionCallback callbacks) { Toast.makeText(activity,"正在申请 " + permission + " 权限", Toast.LENGTH_LONG).show(); } /** * 通知宿主请求系统权限 * @param activity 申请权限的小程序 Activity * @param permissions 待申请的系统权限列表,参考 android.Manifest.permission 类 * @param callbacks 返回权限申请结果给小程序的回调 */ @Override public void requestForPermissions(Activity activity, String[] permissions, RequestPermissionCallback callbacks) { Toast.makeText(activity,"正在申请 " + permissions[0] + " 等权限", Toast.LENGTH_LONG).show(); } }
    /** * 通知系统权限申请结果 */ interface RequestPermissionCallback { /** * 所有系统权限申请成功 */ void onSuccess(); /** * 部分或者所有系统权限申请被拒绝 * @param rejected 被拒绝的系统权限列表 */ void onFail(String[] rejected); }
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持