Android 如何从原始资源获取uri

Android 如何从原始资源获取uri,android,firebase,firebase-storage,Android,Firebase,Firebase Storage,我的原始文件夹中有一个.txt文件。我想获取文件的uri并创建一个新文件以上载到firebase 这个想法很简单 从我的res/raw资源中获取txt文件 将其上载到firebase存储 我已经做到了这一点 String path = "android.resource://" + getPackageName() + "/" + "raw/grupos.txt"; Uri file = Uri.fromFile(new File(path)); riversRef.putFile(fi

我的原始文件夹中有一个.txt文件。我想获取文件的uri并创建一个新文件以上载到firebase

这个想法很简单

  • 从我的res/raw资源中获取txt文件
  • 将其上载到firebase存储
  • 我已经做到了这一点

     String path = "android.resource://" + getPackageName() + "/" + "raw/grupos.txt";
    
     Uri file = Uri.fromFile(new File(path));
    
    riversRef.putFile(file)
                    .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {....
    
    但是当我打电话时

     String path = "android.resource://" + getPackageName() + "/" + "raw/grupos.txt";
    
     Uri file = Uri.fromFile(new File(path));
    
    riversRef.putFile(file)
                    .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {....
    
    riversRef.putFile(文件)
    .addOnSuccessListener(新OnSuccessListener(){。。。。
    
    表示该文件无效

     String path = "android.resource://" + getPackageName() + "/" + "raw/grupos.txt";
    
     Uri file = Uri.fromFile(new File(path));
    
    riversRef.putFile(file)
                    .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {....
    
    LOGCAT

    java.io.FileNotFoundException: /android.resource:/com.example.usuario.ottasubirarchivos/raw/grupos.txt: 打开失败:enoint(没有这样的文件或目录)


    我不知道我是否需要获取资源文件的路径,在内部存储器中创建新文件,获取该文件并将其上载到firebase,或者使用stream…我不知道如何处理此问题…谢谢

    您有此功能吗?
    我可以通过以下方式访问原始资源:
    Android.Net.Uri.Parse(“Android.resource://“+ApplicationContext.PackageName+”/“+resource.raw.beep)

    文件
    beep.ogg
    位于
    Resources/raw
    目录下。我在这里注意到的是:
    raw
    中的大写字母、
    Resource
    和not Resource
    S
    以及我路径中的无扩展名。正如Commonware在注释中指出的那样,您没有文件,但是它的Uri直接解析它你可以用这个:

    public class UriUtils {
    
        public static Uri getUriToResource(@NonNull Context context, @AnyRes int resId) throws Resources.NotFoundException {
            Resources res = context.getResources();
    
            Uri resUri = Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE +
                    "://" + res.getResourcePackageName(resId)
                    + '/' + res.getResourceTypeName(resId)
                    + '/' + res.getResourceEntryName(resId));
            return resUri;
        }
    }
    

    String path=“android.resource://”+getPackageName()+“/”+“.txt”+“raw/grupos.txt”之类的东西?我试过了,但不起作用。您试过了:
    Uri.fromFile()
    仅适用于文件系统路径。使用
    Uri.parse()
    解析已经是
    Uri
    的内容。