Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android requestPermissions()方法在活动中显示错误警告_Android_Android Fragments_Android Activity - Fatal编程技术网

Android requestPermissions()方法在活动中显示错误警告

Android requestPermissions()方法在活动中显示错误警告,android,android-fragments,android-activity,Android,Android Fragments,Android Activity,我在片段中使用了requestPermissions()方法,其工作正常,没有显示任何错误或警告,但当我在活动中出于相同目的使用相同的代码时,其工作正常,但显示错误警告。下面是我在片段和活动中使用的代码 requestPermissions(new String[]{WRITE_EXTERNAL_STORAGE, CAMERA}, PERMISSION_REQUEST_CODE); 它是这样显示的 代码正在正确运行,但它仅在活动中显示,而不是在片段中显示,为什么以及如何修复此问题?问题:是M

我在片段中使用了
requestPermissions()
方法,其工作正常,没有显示任何错误或警告,但当我在活动中出于相同目的使用相同的代码时,其工作正常,但显示错误警告。下面是我在片段和活动中使用的代码

requestPermissions(new String[]{WRITE_EXTERNAL_STORAGE, CAMERA}, PERMISSION_REQUEST_CODE);
它是这样显示的

代码正在正确运行,但它仅在活动中显示,而不是在片段中显示,为什么以及如何修复此问题?

问题:是MarshMallow&;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp。您当前的min API是21(棒棒糖),它没有运行时权限

解决方案:您需要检查当前API是否高于棉花糖或使用


在您的
AndroidManifest.xml
中,您指定了
android:minSdkVersion=“21”
,但此API仅在SDK版本23及更高版本上可用

您必须先检查android版本,否则您的应用程序将在android版本5.0(SDK 21)和5.1(SDK 22)上崩溃


有关检查和支持不同android版本的信息,请参阅

您的最低api级别为21,但requestPermission方法从版本级别23开始工作

因此,要使用requestPermission()方法,必须处理版本代码-

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
{
 requestPermission(............................)
}

您的最低api级别版本是21,但requestPermission方法从版本级别23开始工作。在活动中,您可以使用ActivityCompat.RequestPermissions显示此部分中的错误“(新字符串[]{WRITE_EXTERNAL_STORAGE,CAMERA},PERMISSION_REQUEST_CODE)”显示此部分中的错误”(新字符串[]{WRITE_EXTERNAL_STORAGE,CAMERA}),权限\请求\代码)“当我使用ActivityCompat时。我很困惑,因为它在片段中工作时没有在您的权限前面附加errorAppend
Manifest.permission
,或者静态导入这些包。我已经更新了我的答案;请检查。您可能正在使用
FragmentCompat
(支持库/androidx),该库可能内部有这些检查。支持库与您的应用程序捆绑在一起,因此它随时可用。
ActivityCompat.requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CAMERA}, PERMISSION_REQUEST_CODE);
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
{
 requestPermission(............................)
}