0
import android.preference.PreferenceFragment;
import android.support.v13.app.FragmentCompat;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
public class Preferences extends PreferenceFragment implements OnPreferenceClickListener, FragmentCompat.OnRequestPermissionsResultCallback {
if (ContextCompat.checkSelfPermission(activity, android.Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(activity,
new String[]{ android.Manifest.permission.WRITE_EXTERNAL_STORAGE },
Constant.WRITE_STORAGE_PERMISSION);
}
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grants) { }
我試圖獲得新的權限。當它應該時,對話框會顯示請求權限,但是onRequestPermissionResult從來不會被調用,無論是拒絕還是接受。OnRequestPermissionsResultCallback在PreferenceFragment中未觸發
任何想法?這些例子都是使用Activity而不是Fragment,所以這可能是問題所在。另外,我不確定我應該使用哪個Compat(v4 vs v13)。閔SDK是14
相同的結果。有什麼不同?問題是'public void onRequestPermissionsResult(int requestCode,@NonNull String [] permissions,@NonNull int [] grantResults){}'永遠不會被調用。 – xBlue
另外,什麼是'activity.setPermissionResultListener()'和'permissionResultListener.onPermissionResult'? – xBlue
@xBlue,public void onRequestPermissionsResult(int requestCode,String [] permissions,int [] grantResults){},此方法僅在活動中調用,而不是在片段中調用,因此您必須在活動中實現此方法,片段,您必須創建接口PermissionResultListener。意思是在你的活動中,你必須聲明變量permissionResultListener和方法public void setPermissionResultListener(PermissionResultListener permissionResultListener) –