【问题标题】:Android OS 11+ pushing data files to an applications scoped storageAndroid OS 11+ 将数据文件推送到应用程序范围的存储
【发布时间】:2022-01-18 19:33:45
【问题描述】:

我有一个 Android 算法库,我想在一个可以在真实设备上运行的应用程序中进行测试。为了运行这个测试,我需要能够将数据文件从计算机推送到手机,推送到正在测试的应用程序可以读取的位置。在 OS 11 之前,这可以使用 adb push ... 命令完成,但新的范围存储隐私功能将不再允许我这样做。

无论解决方案是什么,它都不需要人工干预,因为此测试的目的是作为 CI/CD 管道的一部分自动运行。

有人有解决办法吗?提前感谢您的建议!

【问题讨论】:

    标签: android automation adb


    【解决方案1】:

    您可以将此权限添加到清单中:

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

    要授予此权限,您需要启用它,但据我所知,这不能以编程方式更改,但您可以使用此 adb 命令通过 UI 更改它(或者您可以编写一个 UI Automator 脚本更健壮):

    adb shell "am start -a android.settings.MANAGE_APP_ALL_FILES_ACCESS_PERMISSION \
           -d package:<REPLACE_WITH_YOUR_PACKAGE_NAME> ; \
           sleep 2 ; \
           input keyevent KEYCODE_DPAD_DOWN ; \
           input keyevent KEYCODE_DPAD_DOWN ; \
           input keyevent KEYCODE_DPAD_CENTER"
    

    现在您可以正常读取文件了:

    @Test
    fun myTest() {
        val content = File("/sdcard/Download/myFile.txt")
            .useLines(Charsets.UTF_8) {
                it.joinToString("\n")
            }
        Log.d("TAG", content)
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-30
      • 1970-01-01
      • 2020-10-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多