gpt4 book ai didi

android - 无法获得权限 : "android.permission.SET_ALARM"

转载 作者:太空狗 更新时间:2023-10-29 15:58:31 33 4
gpt4 key购买 nike

我制作了一个 android 应用程序并使用 AlarmManager 和 Broadcast Receiver 来获取本地通知。但是我的 Receiver 类根本没有被调用。我回溯了这个问题,发现我的应用无法获得“SET_ALARM”权限。请在下面找到相同的屏幕截图。

截图:

enter image description here

为了交叉检查权限问题,我在 MainActivity.java 中添加了以下代码来检查应用程序是否能够获得权限。我发现它无法获得请求的 SET_ALARM 权限。请在下面找到代码。

MainActivity.java

package com.dileepmanuballa224.alarm_test;

import android.Manifest;
import android.app.AlarmManager;
import android.content.pm.PackageManager;
import android.os.Build;
import android.support.annotation.RequiresApi;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;


public class MainActivity extends AppCompatActivity {

AlarmManager am;
@RequiresApi(api = Build.VERSION_CODES.M)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

if(ContextCompat.checkSelfPermission(this, Manifest.permission.SET_ALARM)!= PackageManager.PERMISSION_GRANTED){
Log.d("Perm check:SET_ALARM", "Permission Denied");
requestPermissions(new String[]{Manifest.permission.SET_ALARM},1);
}else{
Log.d("Perm check:SET_ALARM", "Permission Exists");
}

if(ContextCompat.checkSelfPermission(this, Manifest.permission.INTERNET)!= PackageManager.PERMISSION_GRANTED){
Log.d("Perm check:INTERNET", "Permission Denied");
requestPermissions(new String[]{Manifest.permission.SET_ALARM},1);
}else{
Log.d("Perm check:INTERNET", "Permission Exists");
}

}
}

list 文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.dileepmanuballa224.alarm_test">
<uses-permission android:name="android.permission.SET_ALARM"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name=".AlarmReceiver"/>
</application>

</manifest>

记录结果:

enter image description here

谁能帮我解决这个问题。

最佳答案

您在 list 中声明的​​权限不是正确的权限值,权限的实际值是这样的:

<uses-permission android:name="com.android.alarm.permission.SET_ALARM" />

参见 this ,不存在这样的权限,这就是它拒绝权限以及不请求权限的原因,将权限更改为上述值,一切都会正常进行。

此外,如果您想验证一下:

if(ContextCompat.checkSelfPermission(this, Manifest.permission.SET_ALARM)!= PackageManager.PERMISSION_GRANTED){
Log.d("Perm check:SET_ALARM", "Permission Denied");
requestPermissions(new String[]{Manifest.permission.SET_ALARM},1);
}else{
Log.d("Perm check:SET_ALARM", "Permission Exists");
}

如果您检查 Manifest.permission.SET_ALARM 的值,您会看到它将是 "com.android.alarm.permission.SET_ALARM",在这里看到这个:

enter image description here

关于android - 无法获得权限 : "android.permission.SET_ALARM",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51182390/

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