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

现在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;
+        }
+    }
+}




猜你喜欢

转载自blog.csdn.net/ieiqny1/article/details/78752274