android9.0 默认apk权限添加

1.默认赋予全部权限:
安卓动态要求用户允许添加权限,直接将如下代码中的final boolean grantPermissions = (args.installFlags
& PackageManager.INSTALL_GRANT_RUNTIME_PERMISSIONS) != 0;改为final boolean grantPermissions=true便可。

文件路径:framework\base\services\core\java\com\android\server\pm\PackageManagerService.java

case POST_INSTALL: {
   
   
                    if (DEBUG_INSTALL) Log.v(TAG, "Handling post-install for " + msg.arg1);

                    PostInstallData data = mRunningInstalls.get(msg.arg1);
                    final boolean didRestore = (msg.arg2 != 0);
                    mRunningInstalls.delete(msg.arg1);

                    if (data != null) {
   
   
                        InstallArgs args = data.args;
                        PackageInstalledInfo parentRes = data.res;
                        
                        /*final boolean grantPermissions = (args.installFlags
                                & PackageManager.INSTALL_GRANT_RUNTIME_PERMISSIONS) != 0;
                        */
                        //直接将grantPermissions该为true便可
                        final boolean grantPermissions = true;
                        final boolean killApp = (args.installFlags
                                & PackageManager.INSTALL_DONT_KILL_APP) == 0;
                        final boolean virtualPreload = ((args.installFlags
                                & PackageManager.INSTALL_VIRTUAL_PRELOAD) != 0);
                        final String[] grantedPermissions = args.installGrantPermissions;

                        // Handle the parent package
                        handlePackagePostInstall(parentRes, grantPermissions, killApp,
                                virtualPreload, grantedPermissions, didRestore,
                                args.installerPackageName, args.observer);

                        // Handle the child packages
                        final int childCount = (parentRes.addedChildPackages != null)
                                ? parentRes.addedChildPackages.size() : 0;
                        for (int i = 0; i < childCount; i++) {
   
   
                            PackageInstalledInfo childRes 
### Android 9.0 APK 实现开机自启动 #### 解析 Zygote 启动过程 对于应用程序要实现在 Android 设备上的开机自启动,理解系统的启动流程至关重要。`app_main.cpp` 文件的任务是依据传递给 zygote 脚本的参数进行解析,在检测到 `--zygote` 参数后,会选择调用 `AndroidRuntime.cpp#start()` 方法来初始化并准备环境,最终进入 Java 层面由 `ZygoteInit.java` 中的相关逻辑完成真正的进程创建与服务注册[^1]。 #### 使用广播接收器监听系统启动事件 为了响应设备重启后的动作,开发者可以在应用中定义一个继承自 `BroadcastReceiver` 类的对象,并重写其中的 `onReceive` 函数用于处理特定类型的广播消息。特别是针对 ACTION_BOOT_COMPLETED 广播,它会在系统完全启动完毕后发送出去,允许第三方 App 执行必要的初始化工作或激活某些后台任务[^3]: ```java public class BootCompletedReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) { // 应用程序在此处执行开机启动所需的操作 } } } ``` #### 配置权限及组件声明 为了让上述广播接收者能够正常运作,还需要在项目的 `AndroidManifest.xml` 文件里做两件事情:一是请求获取 `RECEIVE_BOOT_COMPLETED` 权限;二是通过 `<receiver>` 标签向系统注册这个广播接受者及其感兴趣的意图过滤条件。以下是具体的 XML 片段示例: ```xml <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> <application ...> ... <receiver android:name=".BootCompletedReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED"/> </intent-filter> </receiver> </application> ``` 值得注意的是,在 Android 8.0 及以上版本中引入了更加严格的后台运行限制政策,因此即使成功接收到 BOOT_COMPLETED 消息也不能立即启动长期驻留的服务实例。相反应该考虑采用 JobScheduler 或 WorkManager API 来安排延迟性的工作项,从而更好地适应现代 Android 系统的行为模式[^4]。 #### 处理特殊场景下的自动授权问题 考虑到用户体验以及减少不必要的打扰,部分情况下可以尝试构建一套框架级别的解决方案,默认授予应用程序所需的敏感权限。不过这种方法涉及到对操作系统内核层面的支持和修改,通常只适用于定制 ROM 场景或是具备较高安全风险评估能力的企业级项目环境中。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值