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