2016-07-25 97 views
1

我有一个Activity包含一个片段。我从活动要求接触权限如下:Android onRequestPermissionsResult仅在Activity上被调用,但不在片段

ActivityCompat.requestPermissions(this, new String[] {Manifest.permission.READ_CONTACTS}, REQUEST_CODE_PERMISSION);

和片段,我请求摄像头权限是这样的:

requestPermissions(new String[] {Manifest.permission.CAMERA}, REQUEST_CODE_PERMISSION);

我对片段和两个onRequestPermissionsResult方法活动。问题是,即使我请求片段的许可,活动中的onRequestPermissionsResult也会被调用。片段中的onRequestPermissionsResult不会被调用(但如果我从活动中删除onRequestPermissionsResult,它会被调用)。有什么方法可以适用onRequestPermissionsResult方法吗?

+0

你叫“超级”吗? onRequestPermissionsResult(...)'在你的活动中? – ridsatrio

+0

@ridsatrio忘了这么做。现在试过,它的工作原理:D谢谢:) –

回答

1

当您覆盖Activity中的方法时,一定要致电super.onRequestPermissionsResult(...)

这就是说,一个其他的方式来解决这个问题是手动通知Fragment s表示你有你的活动范围内:

@Override 
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { 
    super.onRequestPermissionsResult(requestCode, permissions, grantResults); 

    final List<Fragment> fragments = getSupportFragmentManager().getFragments(); 
    if (fragments != null) { 
     for (Fragment fragment : fragments) { 
      fragment.onRequestPermissionsResult(requestCode, permissions, grantResults); 
     } 
    } 
} 

..和只是有你的片段做,如果requestCode适当的回应行动送他们是他们的。

相关问题