Search code examples
androidandroid-cameraandroid-permissions

Declared permisisons CAMERA in package by default


When i install my application first time and try to use my CAMERA it doesn't ask for permission

MY PERMISSION METHOD

public boolean hasPermissionInManifest(Context context, String permissionName) {
    final String packageName = context.getPackageName();
    try {
        final PackageInfo packageInfo = context.getPackageManager().getPackageInfo(packageName, PackageManager.GET_PERMISSIONS);
        final String[] declaredPermisisons = packageInfo.requestedPermissions;
        if (declaredPermisisons != null && declaredPermisisons.length > 0) {
            for (String p : declaredPermisisons) {
                if (p.equals(permissionName)) {
                    return true;
                }
            }
        }
    } catch (PackageManager.NameNotFoundException e) {

    }
    return false;
}

When i debugg my app i found that the CAMERA permission is presente in the declaredPermisisons

AndroidManifest.xml

 ...
 <uses-permission android:name="android.permission.INTERNET" />
 <uses-feature android:name="android.hardware.camera" android:required="false" />
 ...

NOTE : the permissions found in declaredPermisisons

enter image description here


Solution

  • I don't know about why your code is not working but this is what I use for permission:

    public class MainActivity extends AppCompatActivity {
        private static final int REQUEST_PERMISSION_CODE = 1000;
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            if(!checkPermissionFromDevice())
                requestPermission();
        }
        private void requestPermission() {
            ActivityCompat.requestPermissions(this,new String[]{
                    Manifest.permission.CAMERA
            },REQUEST_PERMISSION_CODE);
        }
        private boolean checkPermissionFromDevice() {
            int camera = ContextCompat.checkSelfPermission(this,Manifest.permission.CAMERA);
            return camera ==PackageManager.PERMISSION_GRANTED;
        }
    }