如何使用uri访问不同应用程序的原始数据?



是否有一种方法可以通过清单设置或任何类似的方式访问不同应用程序的raw ?我试图访问一个应用程序的原始mp3播放不同的应用程序。

如果你的"raw"指的是另一个应用程序的/res/raw/文件夹的内容,那么你不能。至少在没有超级用户/Root访问权限的情况下不会。

理论上,你可以在你的电脑上手动拆下有问题的应用程序,并在你希望的地方使用他们的资源,但这可能很好地违反了他们的服务条款,最坏的情况下侵犯了版权。

然而,如果你对包含你想要访问的资源的应用程序有控制权,你可以定义一个ContentProvider来允许公共访问。也许这个应用程序已经有了一个?


编辑:你现在已经澄清了你可以访问这两个应用程序,所以你当然可以分享任何你喜欢的东西。

正如我上面提到的,您可以使用ContentProvider在应用程序之间共享资源或信息。在这种特殊情况下,您正在寻找共享音频*.mp3文件,我建议从ContentProvider继承FileProvider

我将把实现细节留给官方的Android文档链接,因为他们比我做得更好。

总而言之:

  • 保存音频文件的App A定义了一个FileProvider。
  • App B向App A请求A/文件(可选认证)
  • App A可以立即返回文件,也可以为App b提供文件选择。
  • App B要么消耗接收到的提供商并获得它的文件,要么告诉App A它想要哪个文件。
  • App A现在可以将选择的文件传递给App B,从而消耗它。

注:作为睡前读物,你可以看看这个替代实现,它链接到github的repo,并解释了SO自己的CommonsWare项目的用法:https://stackoverflow.com/a/14734310/1590950

最新更新