sta*_*ken 13 permissions camera android android-intent android-6.0-marshmallow
我需要让用户使用Android 6.0拍摄照片(来自图库或相机应用).
因为我不需要控制相机,所以我想使用这里描述的意图:
但是,如果您不需要此类控件,则可以使用ACTION_IMAGE_CAPTURE意图来请求图像.当您启动意图时,系统会提示用户选择相机应用程序(如果还没有默认的相机应用程序),该应用程序将拍摄照片.相机应用程序将图片返回到应用程序的onActivityResult()方法.
https://developer.android.com/preview/features/runtime-permissions.html
但是对于这个ACTION_IMAGE_CAPTURE,你需要将额外的"MediaStore.EXTRA_OUTPUT"这个Uri 填充到一个临时文件中(没有这个参数我将只有一个缩略图).此临时文件必须位于外部存储中(可由相机应用程序访问).您需要WRITE_EXTERNAL_STORAGE权限才能在外部存储上创建文件.
因此,如果没有android.permission.CAMERA或android.permission.WRITE_EXTERNAL_STORAGE 权限,则无法通过原生对话框/应用程序捕获图像.那是对的吗?
谢谢
Jon*_*ste 11
试试这个:
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File file = new File(getActivity().getApplicationContext().getExternalFilesDir(android.os.Environment.DIRECTORY_PICTURES).getAbsolutePath() + File.separator + "yourPicture.jpg");
Uri uri = Uri.fromFile(file);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, url);
Run Code Online (Sandbox Code Playgroud)
在这种情况下,这使您可以访问可写入相机应用程序的"外部"存储空间,但文件只能从您的应用程序中看到.要在Android中学习更多关于存储空间的信息,请参阅https://www.youtube.com/watch?v=C28pvd2plBA
希望它能帮到你!
如果您在Android 4.4及更高版本上,可以将MediaStore.EXTRA_OUTPUT指定为特定于包的目录下的文件
从Android 4.4开始,现在基于目录结构综合了外部存储设备上文件的所有者,组和模式。这使应用程序可以在外部存储上管理其特定于软件包的目录,而无需它们拥有广泛的WRITE_EXTERNAL_STORAGE权限。例如,包名称为com.example.foo的应用现在可以在没有权限的外部存储设备上自由访问Android / data / com.example.foo /。通过将原始存储设备包装在FUSE守护程序中,可以实现这些综合权限。
https://source.android.com/devices/storage/
| 归档时间: |
|
| 查看次数: |
10017 次 |
| 最近记录: |