我目前正在使用我通过GridLayout构建的照片库,但在处理大量位图时,这似乎使用了大量内存(OOME即将出现)。因此,我正在尝试使用Intent.ACTION_GET_CONTENT在设备上打开照片并通过那里选择照片。 相机功能在拍摄照片时正常工作,返回onActivityResult功能,并将其更新到我的Gridlayout照片库。
我目前正在使用运行Android 4.4(KitKat)的Nexus 7
MainForm 是(类)
photoPath =新文件(目录,photoName)
目录是设置为当前工作目录的(文件)
photoName 是一个(字符串)
CAMERA_CODE 是(int)
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
cUri = Uri.fromFile(photoPath);
intent.putExtra(MediaStore.EXTRA_OUTPUT, cUri);
startActivityForResult(intent, CAMERA_CODE); // launch camera
我尝试使用它来更新photolist,然后启动intent,但它不起作用(我可能使用的不正确,但在this post中有人建议)
MediaScannerConnection.scanFile(MainForm.this, new String[] { directory.getAbsolutePath() },null, new MediaScannerConnection.OnScanCompletedListener() {
public void onScanCompleted(String path, Uri uri){
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
intent.setData(uri);
intent.setType("image/*");
startActivityForResult(Intent.createChooser(intent,"Select Picture"), 12345);
}
});
我在this question中读到尝试使用此方法,但它似乎无法正常工作
MainForm.this.getContentResolver().notifyChange(MediaStore.Images.Media.INTERNAL_CONTENT_URI, null);
在this question和here中重新索引设备上的照片,建议使用sendBroadcast
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.fromFile(directory)));
但是我遇到了这个错误
E / AndroidRuntime(30177):java.lang.SecurityException:Permission Denial:不允许从pid = 30177发送广播android.intent.action.MEDIA_MOUNTED,uid = 10122
这个错误是什么意思?
无论我在intent.setData下放置什么,打开intent似乎都没有打开该文件夹,而是在“Recent”选项卡下打开android浏览器
任何提示或建议都会受到极大的赞赏!如果有任何其他代码或日志结果我应该发布,请在下面评论!