使用
nabinbhandari / Android-Permissions库:Link
我在Android设备API级别> 20上运行应用程序时出现错误
这是非活动类。 MainApp.getmContext()返回应用程序上下文:
String[] permissions = {Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION};
Permissions.check(MainApp.getmContext(), permissions, null/*rationale*/, null/*options*/, new PermissionHandler() {
@Override
public void onGranted() {
// do your task.
Toast.makeText(MainApp.getmContext(), "Granted", Toast.LENGTH_SHORT).show();
}
@Override
public void onDenied(Context context, ArrayList<String> deniedPermissions) {
Toast.makeText(MainApp.getmContext(), "Denied", Toast.LENGTH_SHORT).show();
}
});
错误出现在 Permissions.check 行上。
答案 0 :(得分:2)
我们必须在权限参数中传递活动[您要在其上显示权限的]上下文:
public static void permissionGrant(Context mContext){
String[] permissions = {Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION};
Permissions.check(mContext, permissions, null/*rationale*/, null/*options*/, new PermissionHandler() {
@Override
public void onGranted() {
// do your task.
Toast.makeText(MainApp.getmContext(), "Granted", Toast.LENGTH_SHORT).show();
}
@Override
public void onDenied(Context context, ArrayList<String> deniedPermissions) {
Toast.makeText(MainApp.getmContext(), "Denied", Toast.LENGTH_SHORT).show();
}
});
}
答案 1 :(得分:1)
我相信是因为您的MainApp.getmContext。那实际上是应用程序上下文。您需要一个活动上下文。
答案 2 :(得分:0)
在某些设备中,从服务上下文开始新活动时,需要使用Intent.FLAG_ACTIVITY_NEW_TASK
中的Intent
。为此,请将以下对象用作options
参数。
Options options = new Options().setCreateNewTask();
有关更多信息,请参见this issue和this pull request.