Android共享应用私有文件

时间:2016-08-29 13:26:24

标签: android file share private

是否可以通过Intent将一些音频文件分享给其他应用,如电报​​,谷歌驱动器,whatsapp? 我的文件正在下载并保存到我的app私人文件夹中,例如:/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" />

Dunno我做错了什么。

1 个答案:

答案 0 :(得分:5)

第三方应用对internal storage的部分内容无权。

最有可能的是,您use FileProvider可以将此内容提供给其他应用,至少如果您的文件位于getFilesDir()getCacheDir()下。