我在上传带有媒体承诺的图片方面存在一些问题,如here所述。
问题是,在将手机更新到新的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"/>
知道如何解决这个问题吗?
编辑:
我也尝试加载这样的承诺,但结果完全相同:
var loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onMediaLoaded );
loader.contentLoaderInfo.addEventListener(ErrorEvent.ERROR, onError);
loader.loadFilePromise(imagePromise);
答案 0 :(得分:1)
在Android 6.0(v23)中,他们引入了运行时权限,您必须要求用户获得访问某些“危险”权限的权限。
问题是Adobe尚未将此权限请求添加到您正在使用的媒体加载方法中。
有两种解决方法,正如我在评论中建议的那样,将目标sdk设置为旧版本。这将告诉Android您的应用程序不支持任何6.0+功能,并且应该依赖于旧的权限模型。
另一种方法是在需要时获取ANE以请求所需的权限。例如,您可以使用我们的权限ANE:
http://airnativeextensions.com/extension/com.distriqt.Permissions
如果您需要在应用中使用任何Android 6.0功能,请使用该方法。