1
0
Fork 0
mirror of https://github.com/M66B/NetGuard.git synced 2025-02-23 06:41:05 +00:00

Check runtime permissions (Android M)

This commit is contained in:
M66B 2015-12-01 16:17:28 +01:00
parent b412495a8c
commit 2c2480f052
2 changed files with 36 additions and 0 deletions

View file

@ -3,6 +3,7 @@
package="eu.faircode.netguard">
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.android.vending.BILLING" />

View file

@ -19,6 +19,7 @@ package eu.faircode.netguard;
Copyright 2015 by Marcel Bokhorst (M66B)
*/
import android.annotation.TargetApi;
import android.app.AlertDialog;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
@ -27,6 +28,8 @@ import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.graphics.Color;
import android.net.Uri;
import android.net.VpnService;
@ -55,6 +58,7 @@ import android.widget.CompoundButton;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
public class ActivityMain extends AppCompatActivity implements SharedPreferences.OnSharedPreferenceChangeListener {
@ -72,6 +76,7 @@ public class ActivityMain extends AppCompatActivity implements SharedPreferences
private static final int REQUEST_IAB = 2;
private static final int REQUEST_INVITE = 3;
private static final int REQUEST_LOGCAT = 4;
private static final int REQUEST_PERMISSIONS = 5;
private static final int MIN_SDK = Build.VERSION_CODES.LOLLIPOP;
@ -245,6 +250,36 @@ public class ActivityMain extends AppCompatActivity implements SharedPreferences
// Fill application list
updateApplicationList();
// Check runtime permissions
checkRuntimePermissions();
}
@TargetApi(Build.VERSION_CODES.M)
private void checkRuntimePermissions() {
List<String> listPermission = new ArrayList<String>();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) try {
PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_PERMISSIONS);
for (String permission : info.requestedPermissions) {
boolean granted = (checkSelfPermission(permission) == PackageManager.PERMISSION_GRANTED);
Log.i(TAG, permission + '=' + granted);
if (!granted)
listPermission.add(permission);
}
} catch (PackageManager.NameNotFoundException ex) {
Log.e(TAG, ex.toString() + "\n" + Log.getStackTraceString(ex));
}
// Request runtime permissions
if (!listPermission.isEmpty())
requestPermissions(listPermission.toArray(new String[0]), REQUEST_PERMISSIONS);
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
Log.i(TAG, "onRequestPermissionsResult");
for (int i = 0; i < permissions.length; i++)
Log.i(TAG, permissions[i] + '=' + (grantResults[i] == PackageManager.PERMISSION_GRANTED));
}
@Override