WhatsApp Status Saver Greater than Android 10 permission not working it stucks at splash screen but less then Android 10 will working fine

Viewed 31

public class Splash extends AppCompatActivity { private static final String MANAGE_EXTERNAL_STORAGE_PERMISSION = "android:manage_external_storage"; private final Handler handler = new Handler(); private static final int REQUEST_PERMISSIONS = 1234; private static final String[] PERMISSIONS = { Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE };

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.splash_activity);

    //To hide action Bar(Tool Bar)
    getSupportActionBar().hide();

    if (!arePermissionDenied()){
        next();
        return;
    }

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && arePermissionDenied()) {

        // If Android 11 Request for Manage File Access Permission
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
            Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
            startActivityForResult(intent, REQUEST_PERMISSIONS);
            return;
        }
        requestPermissions(PERMISSIONS, REQUEST_PERMISSIONS);
    }
}

@Override
protected void onResume() {
    super.onResume();
    if (!arePermissionDenied()) {
        next();
    }
}

@RequiresApi(api = Build.VERSION_CODES.R)
boolean checkStorageApi30() {
    AppOpsManager appOps = getApplicationContext().getSystemService(AppOpsManager.class);
    int mode = appOps.unsafeCheckOpNoThrow(
            MANAGE_EXTERNAL_STORAGE_PERMISSION,
            getApplicationContext().getApplicationInfo().uid,
            getApplicationContext().getPackageName()
    );
    return mode != AppOpsManager.MODE_ALLOWED;
}

@RequiresApi(api = Build.VERSION_CODES.KITKAT)
@Override
public void onRequestPermissionsResult
        (int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    if (requestCode == REQUEST_PERMISSIONS && grantResults.length > 0) {
        if (arePermissionDenied()) {
            // Clear Data of Application, So that it can request for permissions again
            ((ActivityManager) Objects.requireNonNull(this.getSystemService(ACTIVITY_SERVICE))).clearApplicationUserData();
            recreate();
        } else {
            next();
        }
    }
}

private boolean arePermissionDenied() {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
        return checkStorageApi30();
    }
    for (String permissions : PERMISSIONS) {
        if (ActivityCompat.checkSelfPermission(getApplicationContext(),
                permissions) != PackageManager.PERMISSION_GRANTED) {
            return true;
        }
    }
    return false;
}

private void next() {

    handler.postDelayed(() -> {
        startActivity(new Intent(Splash.this, MainActivity.class));
        finish();
    }, 1000);

}

}

0 Answers
Related