Android 不同SDK的摄像头权限
我正在尝试创建一个应用程序,捕获一些图像,然后通过电子邮件发送。Android 不同SDK的摄像头权限,android,camera,android-permissions,Android,Camera,Android Permissions,我正在尝试创建一个应用程序,捕获一些图像,然后通过电子邮件发送。 我的问题是: 我需要为每个API创建不同的代码来访问摄像头和外部存储吗 因为我已经创建了这段代码,并且在我的手机上运行良好(API 22): 在这段代码中,我试图将捕获的图像保存在takenPicture文件中,并保存在设备中的特定位置。 当我尝试在另一台API更高的设备(23或24)上运行此代码时,我获得了摄像头的权限被拒绝,尽管我已在AndroidManifest.xml文件中添加了权限: <uses-permissio
我的问题是:
我需要为每个API创建不同的代码来访问摄像头和外部存储吗
因为我已经创建了这段代码,并且在我的手机上运行良好(API 22):
在这段代码中,我试图将捕获的图像保存在takenPicture文件中,并保存在设备中的特定位置。
当我尝试在另一台API更高的设备(23或24)上运行此代码时,我获得了摄像头的
权限被拒绝
,尽管我已在AndroidManifest.xml文件中添加了权限:
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-feature android:name="android.hardware.camera.any" android:required="true"/>
有人能告诉我我还在学习,我真的很想知道如何使这些代码适用于任何设备。当我第一次创建这个项目时,我把棒棒糖作为我最低的安卓系统。在棉花糖下面,所有权限都是在安装时隐式授予的。但在API 23及以上版本上,需要明确地向用户请求运行时所需的权限 这是官方提供的样品
那么,这是否意味着如果您正在为API23及更高版本开发,您不需要在
AndroidManifest.xml
中添加权限?
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-feature android:name="android.hardware.camera.any" android:required="true"/>
if (ContextCompat.checkSelfPermission(thisActivity,
Manifest.permission.CAMERA)
!= PackageManager.PERMISSION_GRANTED) {
// Should we show an explanation?
if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,
Manifest.permission.CAMERA)) {
// Show an explanation to the user *asynchronously* -- don't block
// this thread waiting for the user's response! After the user
// sees the explanation, try again to request the permission.
} else {
// No explanation needed, we can request the permission.
ActivityCompat.requestPermissions(thisActivity,
arrayOf(Manifest.permission.CAMERA),
MY_PERMISSIONS_REQUEST_CAMERA)
// MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
// app-defined int constant. The callback method gets the
// result of the request.
}
}