2016-06-08 4 views
2

У меня возникли проблемы с загрузкой изображений с помощью средств массовой информации, как описано here.Adobe AIR CameraRoll не может выбрать фотографию на Android 6.0

Проблема заключается в том, что после обновления телефона до нового Android 6.0 изображение Async больше не загружается, в следующем коде слушатель добавляется к eventSource, но onMediaLoaded никогда не срабатывает. До обновления все работало отлично:

private function imageSelected(event:MediaEvent):void { 

    trace("Media selected..."); 
    var imagePromise:MediaPromise = event.data; 
    dataSource = imagePromise.open(); 

    if(imagePromise.isAsync) 
    { 

     trace("Asynchronous media promise."); 

     var eventSource:IEventDispatcher = dataSource as IEventDispatcher; 
     eventSource.addEventListener(Event.COMPLETE, onMediaLoaded); 

    } 
    else 
    { 
     trace("Synchronous media promise."); 
     readMediaData(); 
    } 


} 

Среди других разрешений, у меня есть это в дескрипторе:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 

Любая идея, как это исправить?

EDIT:

я также пытался загрузить обещание, как это, но получил точно такой же результат:

var loader = new Loader(); 
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onMediaLoaded); 
loader.contentLoaderInfo.addEventListener(ErrorEvent.ERROR, onError); 
loader.loadFilePromise(imagePromise); 
+1

Какую целевую утилиту вы используете? Скорее всего, это связано с разрешениями времени выполнения, добавленными в 23 (т. Е. 6.0). Вероятно, вы можете обойти его, указав старшую целевую sdk. – Michael

+0

Спасибо, Майкл! Это решение. После смены целевого sdk на 22 он отлично работает отлично :) – deloki

+0

Отлично! Я добавлю ответ другим методом, чтобы обойти проблему. Cheers – Michael

ответ

1

В Android 6.0 (v23) они ввели разрешения во время выполнения, где вы должны спросить пользователя для получения доступа к определенным «опасным» разрешениям.

Проблема заключается в том, что Adobe не добавила этот запрос разрешения к используемому методу загрузки носителя.

Есть два способа обойти это, как я предложил в комментарии, установить целевой целевой SDK в более старую версию. Это скажет Android, что ваше приложение не поддерживает какие-либо функции 6.0+ и должно полагаться на более раннюю модель разрешения.

Другое - захватить ANE, чтобы запросить необходимые разрешения, когда они вам понадобятся. Например, вы можете использовать Permissions ANE от нас:

http://airnativeextensions.com/extension/com.distriqt.Permissions

Используйте этот метод, если вам требуется какой-либо из функций Android 6.0 для использования в вашем приложении.

Смежные вопросы