uniapp自启动权限
如何设置UniApp自启动权限
UniApp本身不直接提供自启动权限的API,需要结合原生平台能力实现。不同平台(Android/iOS)的实现方式差异较大。
Android平台实现方法
在AndroidManifest.xml中添加接收开机广播的权限和声明:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<receiver android:name=".BootReceiver" android:enabled="true" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
创建BootReceiver.java处理广播:
public class BootReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)){
Intent launchIntent = context.getPackageManager().getLaunchIntentForPackage(context.getPackageName());
context.startActivity(launchIntent);
}
}
}
iOS平台注意事项
iOS严格限制应用自启动行为,只能通过后台任务或推送通知等有限方式实现类似功能。常规情况下无法实现真正的开机自启。
厂商白名单问题
部分Android厂商需要手动添加应用到自启动白名单:
- 华为:手机管家 > 启动管理
- 小米:安全中心 > 授权管理 > 自启动管理
- OPPO:手机管家 > 权限隐私 > 自启动管理
- VIVO:i管家 > 软件管理 > 自启动管理
UniApp插件方案
可使用原生插件封装自启动逻辑:
- 创建原生插件模块
- 通过uni.requireNativePlugin调用
- 插件中实现上述原生代码逻辑
权限动态申请
Android 6.0+需要运行时申请权限:
uni.requestPermission({
permission: 'android.permission.RECEIVE_BOOT_COMPLETED',
success: function(res) {
console.log('权限申请成功');
}
});
注意事项:
- 自启动功能可能被系统或安全软件限制
- 过度使用可能影响应用商店审核
- 需在应用内明确告知用户并获取同意







