您的位置:首页 > 移动开发 > Android开发

android 7.0系统怎么让应用开机就自动设置访问权限。

2017-12-08 15:46 1041 查看
现在7.0系统的权限,对于系统默认的应用都要手动去授权,有点烦。体验也不好。目前改了一下可以指定哪个应用不要手动去授权。

说下我的写法,只是粗略的写了下,肯定有很多优化空间。

\packages\apps\PackageInstaller\AndroidManifest.xml

添加一个广播 。我这个广播是第一次开机启动launcher就会发送

+

+                  

+       <receiver

+        android:name=".OpenPermissionReceiver"

+        android:enabled="true"

+        android:exported="true">

+        

+        <intent-filter>

+            <action android:name="intent.action.vlauncher" />

+       </intent-filter>

+       

+  </receiver>

OpenPermissionReceiver.java的写法

+package com.android.packageinstaller;

+

+import android.content.BroadcastReceiver;

+import android.content.Context;

+import android.content.Intent;

+import android.content.SharedPreferences;

+import android.net.Uri;

+import android.content.pm.ApplicationInfo;

+import android.content.pm.PackageInfo;

+import android.content.pm.PackageManager;

+import com.android.packageinstaller.permission.model.AppPermissions;

+import com.android.packageinstaller.permission.model.AppPermissionGroup;

+

+public class OpenPermissionReceiver extends BroadcastReceiver {

+

+    private static final String LOG_TAG = "OpenPermissionReceiver";

+

+    @Override

+    public void onReceive(Context context, Intent intent) {

+        if ("intent.action.vlauncher".equals(intent.getAction())) {

+            +

+ String packageName = "com.xx.xxx";//这里填写包名就可以了

+ PackageInfo packageInfo = getPackageInfo(context, packageName);

+        AppPermissions  mAppPermissions = new AppPermissions(context, packageInfo, null, true, new Runnable() {

+            @Override

+            public void run() {

+              //  getActivity().finish();

+            }

+        });

+

+

+

+ for (AppPermissionGroup group : mAppPermissions.getPermissionGroups()) {

+ if(!group.areRuntimePermissionsGranted())

+ group.grantRuntimePermissions(false); 

+ }

+        }

+    }

+

+

+

+    private static PackageInfo getPackageInfo(Context context, String packageName) {

+        try {

+            return context.getPackageManager().getPackageInfo(packageName, PackageManager.GET_PERMISSIONS);

+        } catch (PackageManager.NameNotFoundException e) {

+            //android.util.Log.i(LOG_TAG, "No package:");

+            return null;

+        }

+    }

+}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐