package com.imagepicker.permissions; import android.app.Activity; import android.content.DialogInterface; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v7.app.AlertDialog; import com.facebook.react.bridge.ReadableMap; import com.imagepicker.ImagePickerModule; import com.imagepicker.R; import java.lang.ref.WeakReference; /** * Created by rusfearuth on 03.03.17. */ public class PermissionUtils { public static @Nullable AlertDialog explainingDialog(@NonNull final ImagePickerModule module, @NonNull final ReadableMap options, @NonNull final OnExplainingPermissionCallback callback) { if (module.getContext() == null) { return null; } final ReadableMap permissionDenied = options.getMap("permissionDenied"); final String title = permissionDenied.getString("title"); final String text = permissionDenied.getString("text"); final String btnReTryTitle = permissionDenied.getString("reTryTitle"); final String btnOkTitle = permissionDenied.getString("okTitle"); final WeakReference<ImagePickerModule> reference = new WeakReference<>(module); final Activity activity = module.getActivity(); if (activity == null) { return null; } AlertDialog.Builder builder = new AlertDialog.Builder(activity, module.getDialogThemeId()); builder .setTitle(title) .setMessage(text) .setCancelable(false) .setNegativeButton(btnOkTitle, new DialogInterface.OnClickListener() { @Override public void onClick(final DialogInterface dialogInterface, int i) { callback.onCancel(reference, dialogInterface); } }) .setPositiveButton(btnReTryTitle, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { callback.onReTry(reference, dialogInterface); } }); return builder.create(); } public interface OnExplainingPermissionCallback { void onCancel(WeakReference<ImagePickerModule> moduleInstance, DialogInterface dialogInterface); void onReTry(WeakReference<ImagePickerModule> moduleInstance, DialogInterface dialogInterface); } }