Android P系统支持虚拟屏显示,在虚拟屏中显示应用的画面。

但是相应的,在虚拟屏中去显示应用画面涉及到跨进程和权限的问题。

参考资料:https://source.android.com/devices/tech/display/multi_display/activity-launch

1·将页面现在在虚拟屏中的方法
Activity 启动行为由应用 AndroidManifest.xml 文件中的启动模式、Intent 标志以及调用方提供的 ActivityOptions 定义。使用 ActivityOption#setLaunchDisplayId(int) 可将特定屏幕指定为 Activity 启动的目标。

需要注意的是:用于启动 Activity 的 Intent 可解析为系统中已有的 Activity 实例。在这种情况下,如果未提供其他标志,Activity 会显示在最后一次使用它时所在的屏幕上。如果使用 ActivityOptions#setTargetDisplayId() 指定目标屏幕,Activity 会移动到该屏幕(如果安全限制及其他限制允许的话)。

2.权限限制
在 Android 10 中,为了防止恶意应用通过从其创建的虚拟屏幕的表面读取用户敏感信息来盗用相关信息,应用只能在其创建的虚拟屏幕上启动其自己的 Activity。

在虚拟屏中,如果启动的界面就是创建虚拟屏软件的app,就不存在权限问题。

但是如果想要把别人的app或者界面现在你自己创建的虚拟屏中,则存在去读用户敏感信息等隐私问题,需要用户授权。

启动方(画面提供者)权限:
1.INTERNAL_SYSTEM_WINDOW,具有 INTERNAL_SYSTEM_WINDOW 权限的系统组件可以在任何屏幕上启动。
2.ActivityInfo.FLAG_ALLOW_EMBEDDED,只有具备FLAG_ALLOW_EMBEDDED标识的Activity才能允许被启动。

在AndroidManifest.xml中添加权限:

<uses-permission android:name="android.permission.INTERNAL_SYSTEM_WINDOW" />

在AndroidManifest.xml给Activity添加标识:

android:allowEmbedded="true"

调用方权限:
1.具有 ACTIVITY_EMBEDDING 权限的调用方可以从具有 ActivityInfo.FLAG_ALLOW_EMBEDDED 标志的其他应用启动 Activity。

在AndroidManifest.xml中添加权限:

<uses-permission android:name="android.permission.ACTIVITY_EMBEDDING" />

Android Q和Android P的区别:
Android 10 包含 ActivityManager#isActivityStartAllowedOnDisplay(Context context, int displayId, Intent intent) 方法,用于先检查应用的安全限制,然后再尝试在屏幕上启动。在 Android 9(及更低版本)中,如果启动受到限制,系统会抛出 SecurityException。

注意:
android.permission.ACTIVITY_EMBEDDING只授权于系统应用和组件的权限,需要LOCAL_CERTIFICATE := platform和LOCAL_PRIVILEGED_MODULE := true权限。

关于虚拟屏使用的权限问题相关推荐

  1. Apple M1 开启HiDPI的新方法,无需虚拟屏,无需SwitchResX

    之前折腾2K屏开HiDPI时记录过三种方法: 2020年03月:SwitchResX 开启HiDPI时显示Not installed的解决办法 2020年11月:升级macOS Big Sur 后 H ...

  2. android 录屏流程以及权限管理(底层权限修改及讲解)

    android正常录屏流程需要申请权限,只需要调用正常的api,用户自己点击确定按钮,即可获取到录屏权限,上层app获取录屏权限的流程,废话不多说,下面看代码: public void takeScr ...

  3. 解决unity 打包在Android 8.0上启动出现黑屏问题(Android权限弹窗问题)

    解决unity 打包在Android 8.0上启动出现黑屏问题 本文链接:https://blog.csdn.net/baidu_34248947/article/details/89377983 我 ...

  4. 自动在副屏/虚拟屏启动100%鲜橙汁 | 可用于上班摸鱼

    准备工作 仅Windows.Win10经测试可用. 请下载(https://ritchielawrence.github.io/cmdow)并安装/解压cmdow.exe并加入PATH.加PATH方法 ...

  5. android获取锁屏之上显示权限,安卓版Skype曝漏洞:绕过锁屏获得手机所有权限

    7月3日晚间消息,Android讨论论坛XDA Developers的一名用户"Pulser"报告称,3.2.0.6637版Skype Android应用存在一个漏洞.利用该漏洞, ...

  6. Android截屏,无需权限。

    /** * 截屏 */ private Bitmap screenShots() { //获取当前屏幕的大小 int width = getWindow().getDecorView().getRoo ...

  7. 星外服务器显示,星外虚拟主机管理系统关于权限的综合说明

    有用户问:"为什么最近服务器上某些功能不能正常使用?平台中的有些功能为什么不能正常运行了"? 答:这是因为您在服务器上改动过什么权限或禁止过什么服务造成的. 首先,请用户不要擅自修 ...

  8. MacBook Air M2无需虚拟屏启用Hidpi+任意缩放(22年9月)

    1.下载BetterDisplay最新版 Release v1.3.0-beta · waydabber/BetterDisplay · GitHub 选择最下面的DMG文件下载 2.启动,选择最下面 ...

  9. linux虚拟用户创建目录权限不足,centos7的FTP服务vsftpd里建立虚拟用户不同目录分配不同权限...

    1.virtual_use_local_privs参数 当virtual_use_local_privs=YES时,虚拟用户和本地用户有相同的权限: 当virtual_use_local_privs= ...

最新文章

  1. 使用 Python 的图像隐写术
  2. 如何通过RFID开发来迎接第四次工业革命(转)
  3. LeetCode 825. 适龄的朋友(计数排序+前缀和)
  4. 面试官问我:什么是JavaScript闭包,我该如何回答?
  5. 字符编码:ASCII、Unicode、UTF-8和字节序
  6. 【链表】牛客网:链表删除
  7. Mybatis和Spring整合逆向工程
  8. oracle 常用函数
  9. 一加nfc门禁卡录入_一加7T手机如何开启NFC、复制门禁卡等功能
  10. Leco题目:寻找两个正序数组的中位数
  11. Mac Mounty 安全退出硬盘
  12. ubuntu18本地镜像源_Ubuntu 18.04 搭建私有软件镜像源(支持 Ubuntu 和 CentOS)
  13. nginx: [warn] conflicting server name “xxx“ on 0.0.0.0:80解决
  14. 内网服务器防火墙作用,防火墙内网用户通过公网域名访问内部服务器典型配置案例集...
  15. Android手机怎样投屏到win10(无需联网)
  16. 数据结构与算法 经典题库练习
  17. gensim : AttributeError: The vocab attribute was removed from KeyedVector in Gensim 4.0.0.
  18. java将后台数据库查询到的数据导出word文档当中
  19. RNN结构有什么问题?LSTM解决了RNN什么问题?怎么解决的?
  20. vue点击预览图片插件(可放大缩小翻转等)

热门文章

  1. PDF模板设计Jaspersoft Studio
  2. 智云通CRM:客户的成交过程就像“拍拖”到“结婚”?
  3. 微信小程序布局技巧(三)
  4. 在线教育直播平台哪个比较好
  5. 搜索商品,实现网格布局
  6. 第三章 模糊查询与分组查询(二)
  7. 七款好音质的民谣吉他精选,初学者的你一定不能错过!
  8. 美篇服务器暂时无法访问,【美篇】不期而遇的惊喜——机上创意服务案例欣赏...
  9. 简单易用Tasks_3.0 - 待办事项和任务-高级清爽离线版
  10. python缩进错误