2015-12-22 109 views
2

這是我的代碼示例。如何獲取DialogFragment中的權限結果回調?

public class DialogPermission extends DialogFragment { 

    @Nullable 
    @Override 
    public View getView() { 
     View root = LayoutInflater.from(getActivity()).inflate(R.layout.frg_dialog_permission, null, false); 
     Button btnRead = (Button) root.findViewById(R.id.btn_read_contact_permission); 
     btnRead.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED){ 
        if (ActivityCompat.shouldShowRequestPermissionRationale(getActivity(),Manifest.permission.READ_CONTACTS)){ 
        }else{ 
         ActivityCompat.requestPermissions(getActivity(),new String[]{Manifest.permission.READ_CONTACTS},101);} 
       } 
      } 
     }); 
     return root; 
    } 

    @Override 
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { 
     Log.e("DialogPermission","Ho! Ho! Ho!"); // Log not printed 
     super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
    } 

} 

我不想在Activity中回調。 我希望一切都清楚解釋。

+3

只使用'requestPermissions(new String [{Manifest.permission.READ_CONTACTS},101);'不'ActivityCompat.requestPermissions..' –

回答

6

要獲取請求許可結果,請使用DialogFragment類的對話使用requestPermissions方法。

public class DialogPermission extends DialogFragment { 

    @Nullable 
    @Override 
    public View getView() { 
     View root = LayoutInflater.from(getActivity()).inflate(R.layout.frg_dialog_permission, null, false); 
     Button btnRead = (Button) root.findViewById(R.id.btn_read_contact_permission); 
     btnRead.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED){ 
        if (shouldShowRequestPermissionRationale(Manifest.permission.READ_CONTACTS)){ 
        } else{ 
         requestPermissions(new String[]{Manifest.permission.READ_CONTACTS},101); 
        } 
       } 
      } 
     }); 
     return root; 
    } 

    @Override 
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { 
     Log.e("DialogPermission","Ho! Ho! Ho!"); // Log printed 
     super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
    } 

} 
1

您必須在您的父級活動中實現此功能,並在片段中實現偵聽器。