当前位置: 首页 > 知识库问答 >
问题:

在Android中将文件路径转换为Uri

路金鑫
2023-03-14

我有一个应用程序,可以用相机拍摄视频。我可以获取视频的文件路径,但我需要它作为Uri。

我得到的文件路径:

/storage/emulated/0/DCIM/Camera/20141219_133139.mp4

我需要的是这样的:

content//media/external/video/media/18576.

这是我的密码。

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // if the result is capturing Image

         if (requestCode == CAMERA_CAPTURE_VIDEO_REQUEST_CODE) {
            if (resultCode == RESULT_OK) {
                // video successfully recorded
                // preview the recorded video
                // selectedImageUri = data.getData();
                // Uri selectedImage = data.getData();
                previewVideo();

                tv1.setText(String.valueOf((fileUri.getPath())));
                String bedroom=String.valueOf((fileUri.getPath()));
                Intent i = new Intent();
                i.putExtra(bhk1.BEDROOM2, bedroom);
                setResult(RESULT_OK,i); 
                btnRecordVideo.setText("ReTake Video");

            } else if (resultCode == RESULT_CANCELED) {
                // user cancelled recording
                Toast.makeText(getApplicationContext(),
                        "User cancelled video recording", Toast.LENGTH_SHORT)
                        .show();
            } else {
                // failed to record video
                Toast.makeText(getApplicationContext(),
                        "Sorry! Failed to record video", Toast.LENGTH_SHORT)
                        .show();
            }
        }
    }

我需要一个Uri从字符串变量卧室

共有3个答案

杜昆琦
2023-03-14

如果你想得到Uri路径从字符串文件路径。

String outputFile = context.getExternalFilesDir("DirName") + "/fileName.extension";

            File file = new File(outputFile);
            Log.e("OutPutFile",outputFile);
            Uri uri = FileProvider.getUriForFile(Activity.this,
                    BuildConfig.APPLICATION_ID + ".provider",file);

在应用程序标记清单中声明提供程序

<provider
            android:name="androidx.core.content.FileProvider"
            android:authorities="${applicationId}.provider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/provider_paths" />
        </provider>

在res之下-

<paths>
    <external-path name="external_files" path="."/>
</paths>
薛修能
2023-03-14

如果你真的想得到内容//media/external/video/media/18576(例如,对于你的视频mp4绝对路径),而不仅仅是文件///storage/simulated/0/DCIM/Camera/20141219_133139,这个问题的正常答案。mp4

MediaScannerConnection.scanFile(this,
          new String[] { file.getAbsolutePath() }, null,
          new MediaScannerConnection.OnScanCompletedListener() {
      public void onScanCompleted(String path, Uri uri) {
          Log.i("onScanCompleted", uri.getPath());
      }
 });

接受的答案是错误的(因为它不会返回content//media/external/video/media/*

Uri.fromFile(file). toString()只返回类似于file//存储/仿真/0/*的东西,这是一个简单的绝对路径的文件在sd卡上,但有file//前缀(方案)

您还可以使用Android的MediaStore数据库获取contenturi

TEST(什么返回Uri.from文件,什么返回MediaScannerConnection):

File videoFile = new File("/storage/emulated/0/video.mp4");

Log.i(TAG, Uri.fromFile(videoFile).toString());

MediaScannerConnection.scanFile(this, new String[] { videoFile.getAbsolutePath() }, null,
        (path, uri) -> Log.i(TAG, uri.toString()));

输出:

I/测试:file:///storage/emulated/0/video.mp4

I/测试:content://media/external/video/media/268927

华锦程
2023-03-14

请尝试以下代码

Uri.fromFile(new File("/sdcard/sample.jpg"))
 类似资料:
  • 我在尝试选择文件时获得URI: /外部/文件/15499 我如何将它转换成真实的文件路径? 注意:我阅读了以下主题: null

  • 我想将 xml 文件转换为路径。 例如,我有一个xml文件,其中包含: 我想要的结果是这样的: Person.name = 测试, person . address . address 1 = Test。 有什么解决办法能让我这么做吗?

  • 问题内容: 如何将类路径上的文件名转换为真实文件名? 例如,假设目录位于您的类路径中。该目录中有一个文件,例如。 仅给出字符串,如何确定(运行时)info.properties文件的绝对文件路径? 结果将是类似。 为什么这有用?编写单元测试时,您可能想访问捆绑在测试资源()中的文件,但正在使用需要真实文件名而不是相对类路径引用的第三方库或其他系统。 注意:我已经亲自回答了这个问题,因为我觉得这是一

  • 问题内容: 我如何从一个指向那个? 问题答案: 以下代码对我有用(基于[如何从jar中仅获取jarURL:URL中包含“!”和jar中的特定文件?](http://codingdict.com/questions/148394):

  • 我尝试了一个可以正常工作的解决方案(见下文),除了在Android 4.4中调用会带来一个名为“从”打开的活动,其中有“最近”、“图像”、“下载”以及几个应用程序可供选择。当我选择图像并尝试解析返回的内容URI(使用下面的代码)时,调用返回null。如果我使用库应用程序选择完全相同的文件,返回文件路径。我只在API级别16和19中测试过这个。一切工作在16预期。至于19去,我必须选择画廊或其他应用

  • 问题内容: 我有文件A的绝对路径。 我有一个从文件A的目录到文件B的相对路径。此路径可以并且将使用“ ..”以任意复杂的方式向上移动目录结构。 范例A: 示例B: 我如何结合这两者以获得 最简单的 绝对路径到文件B? 问题答案: 如果我的问题正确,那么您可以执行以下操作: