Api 23张没有存储权限的照片
Api 23 take picture without storage permissions
我需要在 api 中使用相机 Intent 拍照 23. 我正在请求使用相机 Intent 的许可,但为了限制我需要检查或请求的许可数量我没有' 想将图片保存在应用程序内部存储中。但是将这样的文件传递给相机意图是行不通的。我猜是因为相机无法写入我的应用程序存储空间。
try {
mTempImage = File.createTempFile("psn_temp", ".jpg", Controller.getContext().getCacheDir());
} catch (IOException e) {
e.printStackTrace();
}
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(mTempImage));
如果我这样做
File storageDir = Environment.getExternalStorageDirectory();
try {
mTempImage = File.createTempFile(
"psn_temp", /* prefix */
".jpg", /* suffix */
storageDir /* directory */
);
这可行,但我必须请求存储许可。有没有解决的办法?
使用 Context.getExternalFilesDir(String) 将图片保存到本地外部文件夹。由于 KitKat (api 19),您不需要权限即可写入此外部存储文件夹。在 api19 之前你必须要求 READ_EXTERNAL_STORAGE
,所以如果你想支持更早的 apis 添加到你的清单:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
android:maxSdkVersion="18"
/>
你也不需要 WRITE_* 权限,因为你不是在写 - 相机应用正在做这个。
有关 getCacheDir 为何不起作用的解释,请看这里:
Camera Intent not saving photo
我需要在 api 中使用相机 Intent 拍照 23. 我正在请求使用相机 Intent 的许可,但为了限制我需要检查或请求的许可数量我没有' 想将图片保存在应用程序内部存储中。但是将这样的文件传递给相机意图是行不通的。我猜是因为相机无法写入我的应用程序存储空间。
try {
mTempImage = File.createTempFile("psn_temp", ".jpg", Controller.getContext().getCacheDir());
} catch (IOException e) {
e.printStackTrace();
}
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(mTempImage));
如果我这样做
File storageDir = Environment.getExternalStorageDirectory();
try {
mTempImage = File.createTempFile(
"psn_temp", /* prefix */
".jpg", /* suffix */
storageDir /* directory */
);
这可行,但我必须请求存储许可。有没有解决的办法?
使用 Context.getExternalFilesDir(String) 将图片保存到本地外部文件夹。由于 KitKat (api 19),您不需要权限即可写入此外部存储文件夹。在 api19 之前你必须要求 READ_EXTERNAL_STORAGE
,所以如果你想支持更早的 apis 添加到你的清单:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
android:maxSdkVersion="18"
/>
你也不需要 WRITE_* 权限,因为你不是在写 - 相机应用正在做这个。
有关 getCacheDir 为何不起作用的解释,请看这里:
Camera Intent not saving photo