Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Unable to get permission: "android.permission.SET_ALARM"

I've made an android application and used AlarmManager and Broadcast Receiver to get local notifications. But my Receiver class is not at all being called. I backtraced the issue and found out that my app is not able to get 'SET_ALARM' permission. Please find screenshot below for the same.

Screenshot:

enter image description here

So to crosscheck the permission issue, I've added the following code in MainActivity.java to check whether the app is able to get permissions or not. I found out that it is not able to get requested SET_ALARM permission. Please find the code below.

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");
        }

    }
    }

Manifest file

<?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>

Log Results:

enter image description here

Could anyone please help me with this issue.

like image 286
dileep manuballa Avatar asked Dec 17 '22 22:12

dileep manuballa


1 Answers

The permission you have declared in your Manifest is not the correct value for the permission, actual value for the permission is this:

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

See this, There is no such permission existing that is the reason it is denying the permission as well as not requesting it too, change the permission to the above value and everything will work fine.

Also if you want to verify that then:

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 you would inspect the value of Manifest.permission.SET_ALARM, you will see that it will be "com.android.alarm.permission.SET_ALARM", here see this:

enter image description here

like image 111
Sudhanshu Vohra Avatar answered Jan 09 '23 12:01

Sudhanshu Vohra