gpt4 book ai didi

android - ActivityView 和在辅助显示器上启动 Activity

转载 作者:行者123 更新时间:2023-11-29 02:30:58 26 4
gpt4 key购买 nike

我正在尝试显示(作为系统级应用程序)多个 Activity 。有一个名为 ActivityView 的隐藏 AOSP 类打算这样做。据我了解,以下是您将如何使用它:

findViewById(R.id.view1).setCallback(object: ActivityView.StateCallback() {
override fun onActivityViewReady(view: ActivityView?) {
view?.startActivity(InnerActivity.getIntent(view.context, "my extra"))
}

override fun onActivityViewDestroyed(view: ActivityView?) {
// Cleanup
}
})

请注意,必须声明内部 Activity 并将属性 allowEmbedded 设置为 true。就我而言。我的应用程序还具有 android.permission.INJECT_EVENTS 权限(并且作为系统应用程序构建,具有 ROM 证书并安装在 /system/priv-app 中)

现在,对于这个问题:当我调用 startActivity 时,内部 Activity 在堆栈上显示为一个新 Activity ,就像任何标准的 Context.startActivity 调用一样(ActivityView.startActivity 方法实际上就是这样做的,但在此之前向 bundle 添加了一些选项,以在虚拟显示器上显示 Activity )。我还显示了一个系统 Toast,告诉我我的应用程序不支持在辅助显示器上启动

关于这个 Toast,我尝试向我的应用程序授予 android.permission.CAPTURE_SECURE_VIDEO_OUTPUT 权限,但没有任何帮助。

我可能遗漏了一些与虚拟显示相关的东西,但我看不到什么……

(我知道 ActivityView 是隐藏的,这实际上可能是一个错误,我只是想知道它能做什么或不能做什么。)

最佳答案

我已经在 Android 9 (Pie) 上成功使用了 ActivityView。我记下了一些关键点,您可以引用使用 ActivityView。

  1. 使用ActivityView的应用必须是私有(private)应用(安装在/system/priv-app)并且必须使用系统uid(声明在AndroidManifest.xml中)如下

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="your.packagename"
    android:sharedUserId="android.uid.system">

    Noted that you need to replace "your.packagename" by package name of your application

  2. 您需要通过将文件 android.software.activities_on_secondary_displays.xml 复制到/system/etc/permissions/来配置 Android 框架以支持辅助显示

    • android.software.activities_on_secondary_displays.xml 的内容
      <?xml version="1.0" encoding="utf-8"?>
      <permissions>
      <feature name="android.software.activities_on_secondary_displays" />
      </permissions>
    • 您应该在 makefile 中配置以使用 PRODUCT_COPY_FILES 在从源代码构建 Android 镜像的过程中复制此文件
  3. 启用可调整大小模式并为需要放置在 ActivityView 中的 Activity 使用 singleTask

    在 AndroidManifest.xml 中

    <activity
    android:name=".YourActivity"
    android:resizeableActivity="true"
    android:launchMode="singleTask">

关于android - ActivityView 和在辅助显示器上启动 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49635815/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com