我的应用程序处理用户共享的Uri (注册为intent.action.SEND和intent.action.SEND_MULTIPLE)
我使用TCP解析和发送这些文件,但我想完全在后台完成。
由于一些Uri的工作很好,我尝试分享Google的照片,并获得了Permission Daniel异常,因为我的活动在完成Uri数据处理之前就被破坏了。
我尝试过启动一个服务,认为Uri权限可能会被“保存”,但我想它不是。
有什么方法可以不显示阻塞的UI活动来处理Uri吗?
发布于 2018-10-02 22:35:18
我想完全在后台做这件事。
ACTION_SEND和ACTION_SEND_MULTIPLE是活动行为。你别无选择,只能有一个处理它们的活动。欢迎您让该活动使用Theme.Translucent.NoTitleBar作为“不可见的”活动,但它仍然存在,并且仍然占据着前景。通常,这样的活动在onCreate()中会做一些简短的事情,比如启动一些背景工作并显示一个Toast,然后使用finish()离开。
我尝试过启动一个服务,认为Uri权限可能会被“保存”,但我想它不是
将FLAG_GRANT_READ_URI_PERMISSION添加到用于启动服务的Intent上,并将Uri放在Intent的“数据”方面
new Intent(this, YourServiceClass.class)
.setData(yourUri)
.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)然后,通过调用Uri上的getData()在服务中获取Intent。标志将活动的读取权限传递给服务,服务应该能够使用ContentResolver和openInputStream()读取内容。
https://stackoverflow.com/questions/52617167
复制相似问题