这是我的代码示例.
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中回调.我希望一切都清楚地解释.
要在同一对话框中获取Request权限结果,请使用DialogFragment
class的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); } }