我注意到Google已经在KitKat中引入了一个新的外部存储权限模型,我怀疑我得到的错误与它有关。作为我的代码的片段,
@Override
protected void onPostExecute(Uri uri) {
Intent result = new Intent();
if (getActivity().getIntent().getBooleanExtra(Intent.EXTRA_ALLOW_MULTIPLE, false)) {
result.setClipData(new ClipData(documentItem.getSimpleName(), new String[]{"*/*"}, new ClipData.Item(uri)));
result.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
} else {
result.setData(uri);
result.putExtra("mimeType", "image/jpeg");
}
getActivity().setResult(Activity.RESULT_OK, result);
getActivity().finish();
}
基本上,这段代码被调用来从Launcher Activity,Action Launcher或Google Now启动器更改壁纸。
请注意,我还在AndroidManifest中添加了权限,这显然不是必需的,并且不应该是问题的原因。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
我收到以下错误,
12-17 12:19:16.085 19459 20444 W BitmapCropTask: cannot read file: file:///storage/emulated/0/Android/data/android_app/cache/skydroid_file_cache/89399873/IMG_6586.JPG
12-17 12:19:16.085 19459 20444 W BitmapCropTask: java.io.FileNotFoundException: /storage/emulated/0/Android/data/android_app/cache/skydroid_file_cache/89399873/IMG_6586.JPG: open failed: EACCES (Permission denied)
12-17 12:19:16.085 19459 20444 W BitmapCropTask: at libcore.io.IoBridge.open(IoBridge.java:452)
另外,我试图监控外部存储,我看到下载的文件的文件名看起来像_false.0,我无法打开。
如果您遇到过同样的问题,请伸出援助之手!