2015-12-22 91 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

您必须在您的父级活动中实现此功能,并在片段中实现侦听器。

相关问题