2016-07-25 88 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適當的迴應行動送他們是他們的。

相關問題