Kar*_*iya 53 audio android share
我有很多.mp3文件存储在res/raw文件夹中.
我使用以下代码获取.mp3文件的URI.
Uri.parse("android.resource:///com.my.android.sharesound/"+resId);
Run Code Online (Sandbox Code Playgroud)
返回: 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");
Run Code Online (Sandbox Code Playgroud)
当我选择任何邮件应用程序,例如.来自Share Intent的Gmail或YahooMail,已成功附加mp3文件.但它显示2130968609(作为附件)
我不希望出现resourceId(2130968609).
我想显示fileName.mp3
我怎样才能做到这一点?我错过了什么吗?
要么
有没有其他方法可以通过Share Intent将存储在res/raw中的.mp3文件附加到邮件中.
Kar*_*iya 161
经过大量搜索,我找到了解决方案.
如果您想获取任何资源URI,那么有两种方法:
使用资源名称
句法 : android.resource://[package]/[res type]/[res name]
示例: Uri.parse("android.resource://com.my.package/drawable/icon");
使用资源ID
句法 : android.resource://[package]/[resource_id]
示例: Uri.parse("android.resource://com.my.package/" + R.drawable.icon);
这是获取存储在drawable文件夹中的任何图像文件的URI的示例.
同样,您可以获取res/raw文件夹的URI.
在我的情况下,我使用第一种方式即.使用资源名称
小智 35
这个工作就像魔术:假设mp3保存在原始文件夹中
notification_sound.mp3
然后简单地做这个工作:
Uri uri=Uri.parse("android.resource://"+getPackageName()+"/raw/notification_sound");
Run Code Online (Sandbox Code Playgroud)
Dew*_*eed 10
不要自己构造字符串,请使用Uri.Builder
:
/**
* @param resourceId identifies an application resource
* @return the Uri by which the application resource is accessed
*/
internal fun Context.getResourceUri(@AnyRes resourceId: Int): Uri = Uri.Builder()
.scheme(ContentResolver.SCHEME_ANDROID_RESOURCE)
.authority(packageName)
.path(resourceId.toString())
.build()
Run Code Online (Sandbox Code Playgroud)
来自 AOSP-DeskClock。
小智 5
以下是一些可以帮助某人的方法:
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);
}
Run Code Online (Sandbox Code Playgroud)
只需这样调用方法:
Uri rawUri = getRawUri("myFile.filetype");
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
81303 次 |
最近记录: |