Request Permission from Application class [duplicate]
Asked Answered
T

1

10

As per the new Android doc, In order to collect certain data, I need to request for permission. So I am doing this :

@Override
public void onCreate() {
    super.onCreate();
    ...
    ...
    if (PermissionUtility.isPermitted(applicationContext, android.Manifest.permission.READ_SMS)) {
        userNumber = getUserPhoneNumber();
    } else {
        ActivityCompat.requestPermissions(activity,
                new String[]{android.Manifest.permission.READ_SMS},
                Constants.REQUEST_CODE_READ_SMS);
    }
    ...
    ...
}

The problem is I m doing it in my class which is public class MyApplication extends Application{...} so activity isn't available here. Is there a way to ask for permissions in this class or a way around to pass an activity?

Thomey answered 6/7, 2016 at 8:4 Comment(6)
Paste the whole method, since the requestPermissions method requires an activity instead of context, you'll probably have to invoke that method from an activity in a MyApplication.checkAndRequestPermissions(this, ...) style.Grefe
try ActivityCompat.requestPermissions((Activity) applicationContext, new String[]{android.Manifest.permission.READ_SMS}, Constants.REQUEST_CODE_READ_SMS);. not sure but hope it helps.Carnivore
@UserJP (Activity) applicationContext doesn't work since there is no activityContext available here.Thomey
@Shark, I have edited the code. It's basically inside onCreate where I collect bunch of information before proceeding.Thomey
if context is not available then use getApplicationContext();. And what is the applicationContext in your code PermissionUtility.isPermitted(applicationContext, android.Manifest.permission.READ_SMS)Carnivore
@userJP applicationContext is getApplicationContext();Thomey
A
14

There is no way for you request Permission from Application. You always need an activity for it.

When Application called, no Activity is initialized.

You can refer to this answer that why we need an activity for request Permission:

Android: ActivityCompat.requestPermissions requires activity and not context

Axiology answered 6/7, 2016 at 8:26 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.