【发布时间】: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