如何在设置中以编程方式授予权限-
这是自动授予包SYSTEM_ALERT_WINDOW权限的代码。要运行此代码,您的Android应用程序必须是system(由平台密钥签名)。
此方法基于以下Android源代码文件:AppOpsManager.java和DrawOverlayDetails.java,请参阅方法DrawOverlayDetails.setCanDrawOverlay(boolean newState)
。
@TargetApi(Build.VERSION_CODES.KITKAT)
public static void autoSetOverlayPermission(Context context, String packageName) {
PackageManager packageManager = context.getPackageManager();
int uid = 0;
try {
ApplicationInfo applicationInfo = packageManager.getApplicationInfo(packageName, 0);
uid = applicationInfo.uid;
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
return;
}
AppOpsManager appOpsManager = (AppOpsManager)context.getSystemService(Context.APP_OPS_SERVICE);
final int OP_SYSTEM_ALERT_WINDOW = 24;
try {
Class clazz = AppOpsManager.class;
Method method = clazz.getDeclaredMethod("setMode", int.class, int.class, String.class, int.class);
method.invoke(appOpsManager, OP_SYSTEM_ALERT_WINDOW, uid, packageName, AppOpsManager.MODE_ALLOWED);
Log.d(Const.LOG_TAG, "Overlay permission granted to " + packageName);
} catch (Exception e) {
Log.e(Const.LOG_TAG, Log.getStackTraceString(e));
}
}
}
该代码已在Headwind MDM项目中进行了测试,当Headwind MDM应用程序由平台密钥签名时,它在未经任何用户同意的情况下成功授予“Draw over other apps”权限。该代码已在Android 10(LineageOS 17)上进行了测试。
if (!Settings.canDrawOverlays(this)) {
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, 0);
}
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
您可以检查并请求覆盖权限,以便使用此应用程序覆盖其他应用程序
if (!Settings.canDrawOverlays(this)) {
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, 0);
}
我想在我的应用程序。如果已授予在android中不显示这是我的代码 @override public void onRequestPermissionsResult(int requestCode,String permissions[],int[]grantResults){
语境 我目前正在迁移一个基于OAuth 1.0/OpenId的应用程序以使用OAuth 2.0。该应用程序是Java内置的谷歌应用引擎应用程序,将在新的应用程序市场2.0中出现。我的基本OAuth 2.0流程对个人用户来说运行良好,但在为下面的场景设置服务号时遇到了麻烦。 问题 我尝试启用的流程如下: < li >域管理员从应用程序市场安装应用程序 < li >域管理员授予请求的范围(例如,管理s
问题内容: 我想使用来测试崩溃报告,但第一步是我需要使用代码在Android中模拟致命崩溃。 任何想法? 问题答案: 更新:也可以尝试这种创建方法, 并将其称为某处/ buttonClick 或直接抛出未捕获的异常 答对了!
在Android 9中 我还在清单文件中添加了必需的权限。 当我运行这个程序时,它告诉我解析包错误时出现了问题。
如果我们使用此代码,我们会看到一条消息:搜索GPS。然而,仅示出了GPS符号;GPS实际上不起作用: 为什么没用?以及如何使其正确工作?
问题内容: 我想以组明智的方式列出设备上安装的每个应用程序所获得的权限。 问题答案: 请看一下,希望对您有所帮助。