Android应用程序在接受API 23中的请求权限后崩溃

时间:2017-04-11 12:22:31

标签: android

此代码在API 24中运行良好,但是在用户提供权限后,应用程序在API 23中崩溃了。

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

    isPermissionGranted();
}


@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
        Log.v("", "Permission: " + permissions[0] + "was " + grantResults[0]);
        permissionGranted();
    }
}



public  void isPermissionGranted() {
    if (Build.VERSION.SDK_INT > 22) {
        if (checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
            Log.v("","Permission is granted");
            permissionGranted();
        } else {
            Log.v("","Permission is revoked");
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 1);
        }
    }
    else { //permission is automatically granted on sdk<23 upon installation
        Log.v("","Permission is granted");
        permissionGranted();
    }
}

//called after permission given by user
public void permissionGranted(){
    SystemChanges systemChanges = new SystemChanges();
    systemChanges.setStatusBarColor(this);
    mainFragment();
}

//inflate the main fragment
public void mainFragment(){
    MainFragment mainFragment = new MainFragment();
    FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
    fragmentTransaction.add(R.id.fragmentMain, mainFragment, "mainFragment");
    fragmentTransaction.commit();
}
它在API 23中提供的错误

java.lang.RuntimeException: Failure delivering result ResultInfo{who=@android:requestPermissions:, request=1, result=-1, data=Intent { act=android.content.pm.action.REQUEST_PERMISSIONS (has extras) }} to activity {com.example.anshul.player/com.example.anshul.player.MainActivity}: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState

0 个答案:

没有答案
相关问题