tencent cloud

腾讯云超级应用服务

动态与公告
【2025年1月2日】关于腾讯云小程序平台更名为腾讯云超级应用服务的公告
控制台更新动态
Android SDK 更新动态
iOS SDK 更新动态
Flutter 更新动态
IDE 更新动态
基础库更新动态
产品简介
产品概述
产品优势
应用场景
购买指南
计费概述
按量计费(后付费)
续费指引
停服说明
快速入门
套餐管理
概述
控制台账号管理
存储配置
加速配置
品牌化配置
平台功能
控制台登录
用户和权限体系
小程序管理
小游戏管理
应用管理
商业化
平台管理
用户管理
团队管理
运营管理
安全中心
代码接入指引
Demo 及 SDK 获取
Android
iOS
Flutter
App 服务端接入指南
GUID 生成规则
小程序开发指南
小程序介绍与开发环境
小程序代码组成
指南
框架
组件
API
服务端
JS SDK
基础库
IDE 使用指南
小游戏开发指南
指南
API
服务端
实践教程
小程序登录实践教程
小程序订阅消息实践教程
支付相关实践教程
广告接入实践教程
小游戏订阅消息实践教程
相关协议
数据处理和安全协议

定制权限申请

PDF
聚焦模式
字号
最后更新时间: 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); }


帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈