javaandroidandroid-permissionsdangerous-permissions

Cant see dialog-box for dangerous permission on the fly


I tried to test my GPS permission on my app .

I have built permission manager and added GPS permission in the manifest because GPS is a dangerous permission. However, when I run my app I cannot see any dialog box for this permission, because of that the app toast me that I haven't allowed this permission even though I never have the chance to allow or block this permission on the dialog box.

Would appreciate any kind of help,those are my classes:

Manifest permission

    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

MainActiviey

public class MainActivity extends AppCompatActivity {

public static final int GPS=1;
public static final String gpsFinePermission="Manifest.permission.ACCESS_FINE_LOCATION";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    PermissionManager.check(MainActivity.this, gpsFinePermission, GPS);
    System.out.println("1");
}


@Override
protected void onStart() {
    //startService(new Intent(this,CurrentLocation.class));
    super.onStart();
    System.out.println("2");
}

@Override//when user allowed OR denied a permission
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    System.out.println("3");
    if(grantResults[0] == PackageManager.PERMISSION_GRANTED && requestCode == GPS){//Allowed
        Toast.makeText(MainActivity.this, "GPS permission granted", Toast.LENGTH_LONG).show();
        System.out.println("4");
    }else
        Toast.makeText(MainActivity.this, "GPS permission is IMPORTANT for this app", Toast.LENGTH_LONG).show();
    }
}

Permission manager

public class PermissionManager {
//A method that can be called from any Activity, to check for specific permission
public static void check(Activity activity, String permission, int requestCode){
    System.out.println("5");
    //If requested permission isn't Granted yet
    if (ActivityCompat.checkSelfPermission(activity, permission) != PackageManager.PERMISSION_GRANTED) {
        System.out.println("6");
        //Request permission from user
        ActivityCompat.requestPermissions(activity,new String[]{permission},requestCode);
    }
} 
}

Solution

  • You should get a string from Manifest.permission class. But you are passing Manifest.permission.ACCESS_FINE_LOCATION as String. You should not use this.

    public static final String gpsFinePermission="Manifest.permission.ACCESS_FINE_LOCATION";
    

    Use this.

    public static final String gpsFinePermission= Manifest.permission.ACCESS_FINE_LOCATION;