1
1
package permissions .dispatcher ;
2
2
3
- import android .annotation .TargetApi ;
4
3
import android .app .Activity ;
5
- import android .app .AppOpsManager ;
6
4
import android .content .Context ;
7
5
import android .content .pm .PackageInfo ;
8
6
import android .content .pm .PackageManager ;
9
7
import android .os .Build ;
10
8
import android .os .Process ;
11
9
import android .support .v4 .app .ActivityCompat ;
10
+ import android .support .v4 .app .AppOpsManagerCompat ;
12
11
import android .support .v4 .util .SimpleArrayMap ;
13
12
14
13
import static android .support .v4 .content .PermissionChecker .checkSelfPermission ;
@@ -106,11 +105,14 @@ private static boolean hasSelfPermission(Context context, String permission) {
106
105
}
107
106
}
108
107
109
- @ TargetApi (Build .VERSION_CODES .M )
110
108
private static boolean hasSelfPermissionForXiaomi (Context context , String permission ) {
111
- AppOpsManager appOpsManager = (AppOpsManager ) context .getSystemService (Context .APP_OPS_SERVICE );
112
- int checkOp = appOpsManager .checkOp (AppOpsManager .permissionToOp (permission ), Process .myUid (), context .getPackageName ());
113
- return checkOp == AppOpsManager .MODE_ALLOWED && checkSelfPermission (context , permission ) == PackageManager .PERMISSION_GRANTED ;
109
+ String permissionToOp = AppOpsManagerCompat .permissionToOp (permission );
110
+ if (permissionToOp == null ) {
111
+ // in case of normal permissions(e.g. INTERNET)
112
+ return true ;
113
+ }
114
+ int noteOp = AppOpsManagerCompat .noteOp (context , permissionToOp , Process .myUid (), context .getPackageName ());
115
+ return noteOp == AppOpsManagerCompat .MODE_ALLOWED && checkSelfPermission (context , permission ) == PackageManager .PERMISSION_GRANTED ;
114
116
}
115
117
116
118
/**
@@ -135,7 +137,6 @@ public static boolean shouldShowRequestPermissionRationale(Activity activity, St
135
137
* @param context context
136
138
* @return target sdk version
137
139
*/
138
- @ TargetApi (Build .VERSION_CODES .DONUT )
139
140
public static int getTargetSdkVersion (Context context ) {
140
141
if (targetSdkVersion != -1 ) {
141
142
return targetSdkVersion ;
0 commit comments