[英]Share raw resources android
我的原始資源中有 .mp3、.mp4 和 .jpg 文件。 我想與社交應用分享這些文件。 為此,我嘗試設置文件提供程序,但沒有成功。
顯現:
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="com.my.packagename.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/paths" />
</provider>
路徑.xml:
<?xml version="1.0" encoding="utf-8"?>
<paths>
<files-path name="file_path" path="."/>
<external-files-path name="external_path" path="/" />
</paths>
這就是我嘗試共享文件的方式(在本例中為音頻):
File file = new File(mAudio.getSoundUri().getEncodedPath());
Uri soundUri = FileProvider.getUriForFile(
getContext(),
"com.my.packagename.fileprovider",
file);
Intent sharingIntent = new Intent(Intent.ACTION_SEND);
sharingIntent.setType("audio/mp3");
sharingIntent.putExtra(Intent.EXTRA_STREAM, mAudio.getSoundUri());
startActivity(Intent.createChooser(sharingIntent, "Send"));
mAudio
對象的getSoundUri()
返回一個像這樣的 Uri: android.resource://com.my.packagename/raw/sound.mp3
當我運行它時,我要么沒有收到任何錯誤,但沒有顯示意圖並且我的活動被重建,或者我得到了這個:
java.lang.IllegalArgumentException: Failed to find configured root that contains /raw/sound.mp3
我試圖從 Uri 中刪除 /raw 但我得到了同樣的錯誤:
java.lang.IllegalArgumentException: Failed to find configured root that contains /sound.mp3
為什么會這樣?
為什么會這樣?
資源是開發機器上的文件。 它們不是設備上的文件。 設備上沒有資源的文件系統路徑,因此FileProvider
無法為它們提供服務。
您的兩個主要選擇是:
將資源復制到文件(例如,在getCacheDir()
中),然后使用FileProvider
來提供文件
編寫您自己的ContentProvider
以直接提供原始資源(在Context
上使用getResources()
來獲取Resources
object,然后您可以從那里獲取原始資源上的InputStream
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.