gpt4 book ai didi

android - Api 23 在没有存储权限的情况下拍照

转载 作者:行者123 更新时间:2023-11-30 01:42:56 25 4
gpt4 key购买 nike

我需要使用 api 23 中的相机 Intent 拍照。我正在请求使用相机 Intent 的权限,但为了限制我需要检查或请求的权限数量我不想保存应用程序内部存储中的图片。但是将这样的文件传递给相机 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 之前,您必须要求 R E A D _ E X T E R N A L _ S T O R A G E ,所以如果你想支持更早的 api,请添加到你的 list 中:

​ ​ ​ ​<​u​s​e​s​-​p​e​r​m​i​s​s​i​o​n​ ​a​n​d​r​o​i​d​:​n​a​m​e​=​"​a​n​d​r​o​i​d​.​p​e​r​m​i​s​s​i​o​n​.​R​E​A​D​_​E​X​T​E​R​N​A​L​_​S​T​O​R​A​G​E​"​
​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​a​n​d​r​o​i​d​:​m​a​x​S​d​k​V​e​r​s​i​o​n​=​"​1​8​"​
​ ​ ​ ​ ​ ​ ​ ​/​>​

您也不需要 WRITE_* 权限,因为您不是在写 - 相机应用正在执行此操作。

有关 getCacheDir 为何不起作用的解释,请看这里:

Camera Intent not saving photo

关于android - Api 23 在没有存储权限的情况下拍照,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34188837/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com