#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