ndk - oboe android




獲取存儲在android中res/raw文件夾中的.mp3文件的URI (4)

一行答案

        RingtoneManager.getRingtone(getContext(),Uri.parse("android.resource://com.my.package/" + R.raw.fileName)).play();

我有很多.mp3文件存儲在res / raw文件夾中。

我使用以下代碼獲取.mp3文件的URI。

Uri.parse("android.resource:///com.my.android.sharesound/"+resId);

返回: android.resource:///com.my.android.sharesound/2130968609

現在我在創建Share Intent時使用此URI

    shareIntent.putExtra(Intent.EXTRA_STREAM,Uri.parse("android.resource://com.my.android.sharesound/"+resId));
    startActivity(Intent.createChooser(shareIntent,"Share Sound");

當我選擇任何郵件應用程序,例如。 來自Share Intent的Gmail或YahooMail,已成功附加mp3文件。 但它顯示2130968609(作為附件)

我不希望出現resourceId(2130968609)。

我想顯示fileName.mp3

我怎樣才能做到這一點? 我錯過了什麼嗎?

要么

有沒有其他方法可以通過Share Intent將存儲在res / raw中的.mp3文件附加到郵件中。


以下是一些可能有助於某人的方法:

    public Uri getRawUri(String filename) {
        return Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + File.pathSeparator + File.separator + getPackageName() + "/raw/" + filename);
    }
    public Uri getDrawableUri(String filename) {
        return Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + File.pathSeparator + File.separator + getPackageName() + "/drawable/" + filename);
    }
    public Uri getMipmapUri(String filename) {
        return Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + File.pathSeparator + File.separator + getPackageName() + "/mipmap/" + filename);
    }

只需調用這樣的方法:

Uri rawUri = getRawUri("myFile.filetype");

經過大量搜索,我找到了解決方案。

如果您想獲取任何資源URI,那麼有兩種方法:

  1. 使用資源名稱

    語法: android.resource://[package]/[res type]/[res name]

    示例: Uri.parse("android.resource://com.my.package/drawable/icon");

  2. 使用資源ID

    語法: android.resource://[package]/[resource_id]

    示例: Uri.parse("android.resource://com.my.package/" + R.drawable.icon);

這是獲取存儲在drawable文件夾中的任何圖像文件的URI的示例。

同樣,您可以獲取res / raw文件夾的URI。

在我的情況下,我使用第一種方式即。 使用資源名稱


這是一種獲取任何資源的簡潔方法,

 Uri.parse(String.format("android.resource://%s/%s/%s",this.getPackageName(),"resource_folder_name","file_name"));




share