【问题标题】:Android share app private filesAndroid 共享应用私有文件
【发布时间】:2017-01-05 13:22:10
【问题描述】:

是否可以通过 Intent 将一些音频文件分享到其他应用程序,如电报、谷歌驱动器、whatsapp ? 我的文件正在下载并保存到我的应用程序私有文件夹中,例如:/data/user/0/myPackage/app_NameOfFolder/file.mp3

我写了这个简单的方法:

    public void sendSound(String fileToSend){
    try{

        Log.d(TAG,"Sending: " + fileToSend);
        Intent sharingIntent = new Intent(Intent.ACTION_SEND);
        Uri audioUri = Uri.parse(fileToSend);
        sharingIntent.setType("audio/*");
        sharingIntent.putExtra(Intent.EXTRA_STREAM, audioUri);
        startActivity(Intent.createChooser(sharingIntent, "Share"));

    }catch (Exception e){
        Log.d("TAG",e.getMessage());
        Log.d("TAG",e.toString());
    }

}

但我无法分享它,出现错误:“无法分享,请重试” 如果我将文件移动到公共目录中,例如:Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getPath() +"/file.mp3";

它有效,所以我认为它与许可有关,所以这是我的清单:

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WAKE_LOCK" />

不知道我做错了什么。

【问题讨论】:

  • 抱歉不可能
  • 您可以尝试通过将文件附加到电子邮件意图来共享文件作为通用文件。通过使用intent chooser,您将能够选择使用哪个应用程序将其发送出去。

标签: android file share private


【解决方案1】:

第三方应用对您的internal storage 部分没有任何权利。

您很可能可以use FileProvider 将这些内容提供给其他应用程序,至少如果您的文件位于getFilesDir()getCacheDir() 下的某个位置。

【讨论】:

  • 好吧,我会尝试一下,感谢您试图指出我的解决方案。
  • 我正在尝试类似的here。有什么建议我缺少什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-04
  • 2021-10-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多