Как получить ответ от ActivityCompat.requestPermissions, запущенных в контексте Adobe Native Extension (ANE)?

#android #air #air-native-extension #ane

#Android #air #air-native-extension #ane

Вопрос:

Я пытаюсь реализовать askForPermisions функцию как собственное расширение Adobe (ANE) для AIR. Моя функция теперь определяется как:

 public class APKaskForPermission implements FREFunction  {
    public static final String TAG = "askForPermission";
    @Override
    public FREObject call(FREContext ctx, FREObject[] passedArgs) {
        FREObject result = null;
        String permission;
        Integer requestCode;

        try{
            permission = passedArgs[0].getAsString();
            requestCode = passedArgs[1].getAsInt();

            if (ContextCompat.checkSelfPermission(NativeExtension.appContext, permission) != PackageManager.PERMISSION_GRANTED) {

                // Should we show an explanation?
                if (ActivityCompat.shouldShowRequestPermissionRationale(ctx.getActivity(), permission)) {
                    Log.d(TAG, "shouldShowRequestPermissionRationale: "   permission);
                    //This is called if user has denied the permission before
                    //In this case I am just asking the permission again
                    Log.d(TAG, "requestPermissions: "   permission);
                    ActivityCompat.requestPermissions(ctx.getActivity(), new String[]{permission}, requestCode);

                } else {
                    Log.d(TAG, "requestPermissions: "   permission);
                    ActivityCompat.requestPermissions(ctx.getActivity(), new String[]{permission}, requestCode);
                }
                result = FREObject.newObject(false);
            } else {
                Log.d(TAG, ""   permission   " is already granted.");
                //Toast.makeText(this, ""   permission   " is already granted.", Toast.LENGTH_SHORT).show();
                result = FREObject.newObject(true);
            }
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }

        return resu<
    }
}
  

Это отображает диалоговое окно, как ожидалось, но я не могу найти, что сделать, чтобы получить ответ, поскольку все примеры в Интернете определяют его в источнике MainActivity, но я нахожусь в контексте собственного расширения.

Любая помощь?

Ответ №1:

Как упоминал Wadedwalker в этом обсуждении, невозможно переопределить или добавить методы во время выполнения к другому классу, в данном случае к основной активности приложения AIR. Поэтому, вероятно, лучший способ — запустить новое пустое действие с целью запуска всплывающего окна и, таким образом, дождаться ответа onRequestPermissionsResult().

Мне удалось получить собственную рабочую базовую версию ANE, которая доступна с открытым исходным кодом здесь:https://github.com/Oldes/ANEAmanitaAndroid-public/tree/eclipse-permissions