我有父母的MDM应用程序来控制孩子的设备,它使用权限SYSTEM_ALERT_WINDOW在禁止的动作执行时在孩子的设备上显示警告.在安装期间的设备M +上,应用程序使用以下方法检查权限:
Settings.canDrawOverlays(getApplicationContext())
Run Code Online (Sandbox Code Playgroud)
如果此方法返回false应用程序打开系统对话框,用户可以在其中授予权限:
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, REQUEST_CODE);
Run Code Online (Sandbox Code Playgroud)
在Android O中,当用户成功授予权限并通过按返回按钮返回应用程序时,方法canDrawOverlays()仍会返回false,直到用户不关闭应用程序并再次打开它或在最近的应用程序对话框中选择它.我在Android Studio中使用Android O在最新版本的虚拟设备上进行了测试,因为我没有真正的设备.
我做了一些研究,另外用AppOpsManager检查权限:
AppOpsManager appOpsMgr = (AppOpsManager) getSystemService(Context.APP_OPS_SERVICE);
int mode = appOpsMgr.checkOpNoThrow("android:system_alert_window", android.os.Process.myUid(), getPackageName());
Log.d(TAG, "android:system_alert_window: mode=" + mode);
Run Code Online (Sandbox Code Playgroud)
所以:
canDrawOverlays()返回false)当用户canDrawOverlays()返回false)canDrawOverlays()返回true)拜托,有人能向我解释这种行为吗?我可以依赖mode == 1操作"android:system_alert_window"并假设用户已授予权限吗?
请帮我实现以下两个TextView的排列:
match_parent)。两个 TextViews 都应该被wrap_content压到他们的身边。