环境:这是我唯一可以使用的跨平台应用。我没有建造它。它大约5岁。目标:Android 4.4及以上,iOS不限。我使用Phonegap Build-specific 3.7.0在Mac上进行开发。我在我的Android模拟器-API 23和19上收到此错误。
我正在尝试访问imageURI以检查文件大小。我的FileTransfer
限制大约是10 MB。这是我的代码:
resolveLocalFileSystemURI(this.pageContainer.items.items[0].imageURI, function(fileEntry){
fileEntry.file(function(fileObj){
if (maxSize <= fileObj.size){
Ext.Msg.alert("Error", "Chosen image is too large. Submit a different image.");
return;
}
else {
Ext.Msg.alert("You are here:", "file size accepted "+ fileObj.size);
}
})
})
问题是它无法通过resolveLocalFileSystemURI
。 adb日志说:
E DatabaseUtils: java.lang.SecurityException: Permission Denial: reading
com.android.externalstorage.ExternalStorageProvider uri
content://com.android.externalstorage.documents/document/1A03-
3B0B%3ADCIM/Camera/elevation.jpg from pid=2921, uid=10080 requires
android.permission.MANAGE_DOCUMENTS, or grantUriPermission()
我知道您可以将此权限添加到AndroidManifest,然后从那里开始,但我实际上只是使用PhoneGap build 3.7.0。我必须编辑config.xml
,目前正在使用这些设置:
<plugin name="org.apache.cordova.camera" source="pgb" spec="0.3.2" />
<plugin name="org.apache.cordova.device" source="pgb" spec="0.2.12" />
<plugin name="org.apache.cordova.file" source="pgb" spec="1.3.3" />
<plugin name="org.apache.cordova.file-transfer" source="pgb" spec="0.5.0" />
<plugin name="org.apache.cordova.geolocation" source="pgb" spec="0.3.10" />
<plugin name="org.apache.cordova.network-information" source="pgb"
spec="0.2.12" />
<preference name="phonegap-version" value="3.7.0" />
<preference name="android-minSdkVersion" value="19" />
<preference name="orientation" value="portrait" />
<preference name="target-device" value="universal" />
<preference name="fullscreen" value="true" />
<preference name="prerendered-icon" value="false" />
<feature name="http://api.phonegap.com/1.0/network" />
<feature name="http://api.phonegap.com/1.0/camera" />
<feature name="http://api.phonegap.com/1.0/geolocation" />
<feature name="http://api.phonegap.com/1.0/media" />
<feature name="http://api.phonegap.com/1.0/contacts" />
<feature name="http://api.phonegap.com/1.0/file" />
<feature name="http://api.phonegap.com/1.0/device" />
以前,我没有包含<feature>
,但是为了将其重新添加到我的config.xml中,导致行为没有变化。我需要添加到我的config.xml
以执行与MANAGE_DOCUMENTS相同的操作吗?
答案 0 :(得分:0)
解决方法是将我的PhoneGap Build版本升级到cli-5.2.0(在其他版本中,我确定)。当我的Android目标为19 +时,我的版本太旧,无法支持授予Android文件访问权限。