【问题标题】:Request Permission from Application class [duplicate]从应用程序类请求权限[重复]
【发布时间】:2016-11-08 05:06:33
【问题描述】:

根据新的 Android 文档,为了收集某些数据,我需要请求许可。所以我正在这样做:

@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);
    }
    ...
    ...
}

问题是我在我的课堂上做这件事 public class MyApplication extends Application{...} 所以 activity 在这里不可用。有没有办法在这个类中请求权限或传递活动的方法?

【问题讨论】:

  • 粘贴整个方法,因为requestPermissions 方法需要一个活动而不是上下文,您可能必须从MyApplication.checkAndRequestPermissions(this, ...) 样式的活动中调用该方法。
  • 试试ActivityCompat.requestPermissions((Activity) applicationContext, new String[]{android.Manifest.permission.READ_SMS}, Constants.REQUEST_CODE_READ_SMS);。不确定,但希望对您有所帮助。
  • @UserJP (Activity) applicationContext 不起作用,因为这里没有可用的 activityContext。
  • @Shark,我已经编辑了代码。它基本上在onCreate 内部,我在继续之前收集了大量信息。
  • 如果context 不可用,则使用getApplicationContext();。你的代码中的applicationContext 是什么PermissionUtility.isPermitted(applicationContext, android.Manifest.permission.READ_SMS)

标签: android android-activity android-permissions android-applicationinfo


【解决方案1】:

Applicationrequest Permission 是没有办法的。你总是需要一个activity

Application被调用时,没有Activity被初始化。

你可以参考这个答案,为什么我们需要一个活动来请求权限:

Android: ActivityCompat.requestPermissions requires activity and not context

【讨论】:

    猜你喜欢
    • 2018-06-12
    • 2020-06-29
    • 1970-01-01
    • 2017-07-05
    • 1970-01-01
    • 1970-01-01
    • 2015-10-24
    • 2018-03-27
    • 2021-07-27
    相关资源
    最近更新 更多