【问题标题】:Storage Access Framework in test app测试应用程序中的存储访问框架
【发布时间】:2015-12-15 04:11:19
【问题描述】:

我正在使用 Intent.ACTION_OPEN_DOCUMENT_TREE 授予我的应用程序对外部存储的写入权限(在 Lollipop 和 Marshmallow 上)。

但我想在测试应用程序中写入外部存储。 Intent.ACTION_OPEN_DOCUMENT_TREE 使用系统对话框,因此我无法在测试期间授予权限。我也尝试在应用程序中允许它,然后在测试中使用它,但它不是共享的 - 应用程序项目和测试项目是不同的包。

有人知道一些解决方法吗?为测试目的授予整个外部存储的权限?也许通过更改某些系统属性?

adb shell setprop SOMEPROPERTY 1

【问题讨论】:

    标签: android testing android-external-storage storage-access-framework


    【解决方案1】:

    你可以试试这个命令来授予和撤销权限

    adb pm grant com.package.myapp android.permission.<PERMISSION>
    adb pm revoke com.package.myapp android.permission.<PERMISSION>
    

    读取/写入外部存储的权限是

    android.permission.WRITE_EXTERNAL_STORAGE
    android.permission.READ_EXTERNAL_STORAGE
    

    这里是解释它的视频链接:Runtime Permissions in Android 6.0 Marshmallow (Android Development Patterns Ep 3)

    【讨论】:

    • 不幸的是,这只是访问主外部存储的替代品。我需要使用 Intent.ACTION_OPEN_DOCUMENT_TREE 访问辅助外部存储,我需要测试此功能。
    【解决方案2】:

    作为一种解决方法,您可以使用 adb shell input keyevent 来检查授予权限复选框。

    用法:

       adb shell input [text|keyevent]
       adb shell input text <string>
       adb shell input keyevent <event_code>
    

    More Details you can find here.

    【讨论】:

    • 我需要在测试应用程序中授予权限。但我什至不知道如何在 TEST 应用程序中显示系统“打开方式”对话框以便能够授予它,例如使用此 adb shell 输入...或手动。你有什么例子吗?
    最近更新 更多