package com.jdroid.android.permission;
import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import com.jdroid.android.R;
import com.jdroid.android.dialog.AlertDialogFragment;
public class PermissionDialogFragment extends AlertDialogFragment {
public static final String PERMISSION_EXTRA = "permissionExtra";
public static final String PERMISSION_REQUEST_CODE_EXTRA = "permissionRequestCodeExtra";
private String permission;
private int permissionRequestCode;
public static void show(FragmentActivity fragmentActivity, String title, CharSequence message, String permission, int permissionRequestCode) {
show(fragmentActivity, null, title, message, permission, permissionRequestCode);
}
public static void show(Fragment targetFragment, String title, CharSequence message, String permission, int permissionRequestCode) {
show(targetFragment.getActivity(), targetFragment, title, message, permission, permissionRequestCode);
}
private static void show(FragmentActivity fragmentActivity, Fragment targetFragment, String title, CharSequence message, String permission, int permissionRequestCode) {
PermissionDialogFragment fragment = new PermissionDialogFragment();
fragment.addParameter(PermissionDialogFragment.PERMISSION_EXTRA, permission);
fragment.addParameter(PermissionDialogFragment.PERMISSION_REQUEST_CODE_EXTRA, permissionRequestCode);
if(targetFragment!=null) {
fragment.setTargetFragment(targetFragment,0);
}
String screenViewName = PermissionDialogFragment.class.getSimpleName() + "-" + permission;
AlertDialogFragment.show(fragmentActivity, fragment, null, title, message, fragmentActivity.getString(R.string.jdroid_cancel), null,
fragmentActivity.getString(R.string.jdroid_ok), true, screenViewName, null);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
permission = getArgument(PERMISSION_EXTRA);
permissionRequestCode = getArgument(PERMISSION_REQUEST_CODE_EXTRA);
}
@Override
protected void onPositiveClick() {
Fragment targetFragment = this.getTargetFragment();
if (targetFragment != null) {
targetFragment.requestPermissions(new String[] {permission}, permissionRequestCode);
} else {
ActivityCompat.requestPermissions(getActivity(), new String[] {permission}, permissionRequestCode);
}
}
}