tencent cloud

定制权限申请
最后更新时间:2025-07-04 17:33:32
定制权限申请
最后更新时间: 2025-07-04 17:33:32

小程序申请系统权限

在使用小程序时,部分小程序 API 除需要申请小程序授权外,还需要申请对应的 Android 系统权限方可正常使用。SDK 默认会在使用这些 API 时自动弹窗向用户申请系统权限。您可以在初始化 SDK 时设置禁用自动权限申请,但是superapp 需要自行申请这些系统权限以保证小程序接口能够正常运行。
@ProxyService(proxy = MiniConfigProxy.class)
public class MiniConfigProxyImpl extends MiniConfigProxy {
/**
* superapp的Application
* @return
*/
@Override
public Application getApp() {
return "app Application";
}

/**
* 创建初始化配置信息
* @return
*/
@Override
public MiniInitConfig buildConfig() {
MiniInitConfig.Builder builder = new MiniInitConfig.Builder();
MiniInitConfig config = builder
.configAssetName("tcsas-android-configurations.json") //assets中配置文件名称
.autoRequestPermission(false) //配置小程序使用到需要权限的API时是否自动向用户申请对应的系统权限
.debug(true) //日志开关,默认关闭的
.build();
}
}

自定义系统权限申请

通过重写 IPermissionManagerProxy 接口,可以拦截小程序申请 Android 系统权限的事件并自定义权限申请逻辑。IPermissionManagerProxy 接口包含3个方法:isPermissionGranted 方法用于小程序检测superapp是否拥有某个系统权限;requestForPermission 和 requestForPermissions 方法用于小程序通知superapp申请某个或者某一组权限。
注意:
自定义系统权限申请后,初始化配置中的 autoRequestPermission 将不再生效。
@ProxyService(proxy = IPermissionManagerProxy.class)
public class PermissionProxyImpl implements IPermissionManagerProxy {

/**
* 检查superapp是否拥有某个系统权限
* @param context Android 上下文
* @param permission 待检查的系统权限,参考 android.Manifest.permission 类
* @return superapp是否拥有权限
*/
@Override
public boolean isPermissionGranted(Context context, String permission) {
return ContextCompat.checkSelfPermission(context, permission) == PackageManager.PERMISSION_GRANTED;
}

/**
* 通知superapp请求系统权限
* @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();
}

/**
* 通知superapp请求系统权限
* @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); }

本页内容是否解决了您的问题?
您也可以 联系销售 提交工单 以寻求帮助。

文档反馈