相关疑难解决方法(0)

获取Uri Android的真实路径

我正在开发一个VideoPlayer.我将已URI启动的意图转换为字符串,它给了我content://media/external......但我需要得到真正的道路.

例如: /storage/extSdcard.....

我该怎么做呢?

如果需要,这是我的代码:

videoURI = getIntent().getData();
vv.setVideoURI(videoURI);

videoName = videoURI.toString();

tvTitle.setText(videoName);
Run Code Online (Sandbox Code Playgroud)

string android uri path android-videoview

22
推荐指数
7
解决办法
4万
查看次数

Android Kotlin:使用从文件选择器中选择的文件名获取 FileNotFoundException?

我正在开发一个 Android 应用程序,其中一项功能是让用户选择要打开的文件(我想打开纯文本 .txt 文件)。我之前使用 Java 开发过 Android 应用程序,但对于这个应用程序,我使用的是 Kotlin,这是我第一次使用 Kotlin。

我目前让应用程序显示一个文件选择器,让用户点击他们想要打开的文件。然后我尝试使用 File 对象打开文件并执行 forEachLine 循环。但出于某种原因,它抛出一个 java.io.FileNotFoundException (没有这样的文件或目录)与从文件选择器中选择的文件。我不确定出了什么问题,是否必须进行一些转换才能转换文件路径?

我的“加载”按钮的代码:

val btn_load: Button = findViewById<Button>(R.id.btn_load_puzzle)
    btn_load.setOnClickListener {
        val intent = Intent()
            .setType("*/*")
            .setAction(Intent.ACTION_GET_CONTENT)

        startActivityForResult(Intent.createChooser(intent, "Select a file"), 111)
    }
Run Code Online (Sandbox Code Playgroud)

我响应文件选择的功能:

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)

    // Selected a file to load
    if ((requestCode == 111) && (resultCode == RESULT_OK)) {
        val selectedFilename = data?.data //The uri with the location of the file
        if (selectedFilename …
Run Code Online (Sandbox Code Playgroud)

android exception file filenotfoundexception kotlin

7
推荐指数
3
解决办法
5098
查看次数

Android-获取从文件资源管理器中选择的.txt文件的真实路径

我正在开发一个应用程序,我希望能够在该应用程序的.txt文件中导出和导入一些数据。该应用程序的最低API为21。

导出部分效果很好,但是导入部分遇到了麻烦。

我打开文件资源管理器:

butImportPatient.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View view) {
         Intent intent = new Intent();
         intent.setAction(Intent.ACTION_OPEN_DOCUMENT);
         intent.setType("*/*");
         startActivityForResult(intent, IMPORTPATIENT_ACTIVITY_REQUEST_CODE);
    }
});
Run Code Online (Sandbox Code Playgroud)

这看起来像在工作。

但是我的onActivityResult不起作用,我没有找到如何从Uri获取文件。

现在,这是我的代码:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

      if (requestCode == IMPORTPATIENT_ACTIVITY_REQUEST_CODE && resultCode == RESULT_OK) {
            File file = new File(data.getData().getPath()) ;
            String path = file.getAbsolutePath() ;
            StringBuilder text = new StringBuilder();

            try {
                BufferedReader br = new BufferedReader(new FileReader(path));
                String line;

                while ((line = br.readLine()) != null) {
                    text.append(line);
                    text.append("\n"); …
Run Code Online (Sandbox Code Playgroud)

java android file path android-activity

5
推荐指数
1
解决办法
3864
查看次数

.getPath() 与游标在从 Android 中的 uri 获取文件的真实路径方面的区别

问题的主要思想与标题相同 - 当您从 Android 中的 uri 获取文件的真实路径时,.getPath() 与光标之间有什么区别?

如果您没有理解我使用游标的意思,示例在此处。

private String getRealPathFromURI(Uri contentURI) {
    String result;
    Cursor cursor = getContentResolver().query(contentURI, null, null, null, null);
    if (cursor == null) { // Source is Dropbox or other similar local file path
        result = contentURI.getPath();
    } else { 
        cursor.moveToFirst(); 
        int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA); 
        result = cursor.getString(idx);
        cursor.close();
    }
    return result;
}
Run Code Online (Sandbox Code Playgroud)

最常用的两种方式是这两种,但是使用游标似乎有点太复杂了,而您可以通过一种简单的方法 .getPath() 获得相同的结果。所以,我认为在某些情况下我应该使用光标肯定是有原因的,但我无法理解。

你能解释一下它会是什么吗?

android

4
推荐指数
1
解决办法
860
查看次数

在 Android 上从照片 URI 创建文件

我有一个 Android 应用程序,需要让用户从图库中选择一些图片并将这些图片发送到后端(连同一些其他数据)。

为了允许用户选择图片,我的 Fragment 中有以下内容:

private void pickImages() {
    Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
    intent.setType("image/*");
    intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
    startActivityForResult(intent, PICK_PHOTO_FOR_AVATAR);
}
Run Code Online (Sandbox Code Playgroud)

我在这里得到用户所选照片的​​结果:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == PICK_PHOTO_FOR_AVATAR && resultCode == Activity.RESULT_OK) {
        if (data == null) {
            //Display an error
            Toast.makeText(getActivity(), "There was an error getting the pictures", Toast.LENGTH_LONG).show();
            return;
        }

        ClipData clipData = data.getClipData();
        String fileName = null, extension = null;

        //if ClipData is null, then we …
Run Code Online (Sandbox Code Playgroud)

java android photo file multipart

3
推荐指数
1
解决办法
2568
查看次数