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

Android Studio:共享文件通过文件提供商错误E/FilePathConzer解析FilePath无法读取行0, col-1从CursorWindow

令狐珂
2023-03-14

我想分享 /Internal存储/aaa/bbb.dat文件到另一个应用程序通过FileProvider。但它出错了。

我已经将路径放入了provider\u path。xml并将提供程序放入清单文件中。

   // share intent
    private void initShareIntent(String type) {
        boolean found = false;
        Intent share = new Intent(android.content.Intent.ACTION_SEND);
        share.setType("*/*");

        // gets the list of intents that can be loaded.
        List<ResolveInfo> resInfo = getPackageManager().queryIntentActivities(share, 0);
        if (!resInfo.isEmpty()){
            for (ResolveInfo info : resInfo) {
                if (info.activityInfo.packageName.toLowerCase().contains(type) ||
                        info.activityInfo.name.toLowerCase().contains(type) ) {

                    File file = new File(Environment.getExternalStorageDirectory().getPath()+"/aaa/bbb.dat");

    // wrap File object into a content provider. NOTE: authority here should match authority in manifest declaration

                    Uri uri = FileProvider.getUriForFile(MainActivity.this, "org.bramantya.news.copygame.cod.FileProvider", file);

                    share.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
                    share.putExtra(Intent.EXTRA_STREAM, uri); // Optional, just if you wanna share an image.


                    share.setPackage(info.activityInfo.packageName);
                    found = true;
                    break;
                }
            }
            if (!found)
                return;

            startActivity(Intent.createChooser(share, "Select"));
        }
    }
       final Button button = findViewById(R.id.button2);
        button.setOnClickListener(new View.OnClickListener() {
                                      public void onClick(View v) {
                                          // Code here executes on main thread after user presses button


//initShareIntent("midrop");                                                                            
initShareIntent("mail");

                                          if (mInterstitialAd.isLoaded()) {
                                              mInterstitialAd.show();
                                          } else {
                                              Log.d("TAG", "The interstitial wasn't loaded yet.");
                                          }
                                      }
        });

我希望gmail或midrop/shareme能够打开和bbb。dat文件附呈。但它出错了

2019-10-26 10:47:27.582 25559-25584/? E/FilePathConverter: resolveFilePath uri = content://org.bramantya.news.copygame.cod.FileProvider/oblehbleh/aaa/bbb.daterror!
    java.lang.IllegalStateException: Couldn't read row 0, col -1 from CursorWindow.  Make sure the Cursor is initialized correctly before accessing data from it.
        at android.database.CursorWindow.nativeGetString(Native Method)
        at android.database.CursorWindow.getString(CursorWindow.java:465)
        at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:51)
        at android.database.CursorWrapper.getString(CursorWrapper.java:137)
        at com.xiaomi.midrop.sender.c.e.a(Unknown Source:31)
        at com.xiaomi.midrop.sender.c.e.c(Unknown Source:0)
        at com.xiaomi.midrop.sender.c.e.a(Unknown Source:44)
        at com.xiaomi.midrop.sender.ui.TransmissionActivity.a(Unknown Source:61)
        at com.xiaomi.midrop.sender.ui.TransmissionActivity$a.doInBackground(Unknown Source:12)
        at android.os.AsyncTask$3.call(AsyncTask.java:362)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:764)

显示

<?xml version="1.0" encoding="utf-8"?>
<manifest
    package="com.example.app"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <application
        android:allowBackup="true"
        android:fullBackupContent="true"
        android:icon="@mipmap/copygame"
        android:label="@string/app_name"
        android:theme="@style/AppTheme"
        tools:ignore="GoogleAppIndexingWarning">
        <meta-data
            android:name="com.google.android.gms.ads.APPLICATION_ID"
            />
        <activity
            android:name="com.example.app.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <provider
            android:name="androidx.core.content.FileProvider"
            android:grantUriPermissions="true"
            android:exported="false"
            android:authorities="org.bramantya.news.copygame.cod.FileProvider">

            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/provider_paths"/>

        </provider>

    </application>
</manifest>

提供者路径。xml

<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <external-path name="oblehbleh" path="/"/>
</paths>

我是根据这些帖子编写代码的

Android:自定义外部存储文件夹上的文件提供程序https://developer.android.com/training/sharing/send https://developer.android.com/reference/android/support/v4/content/FileProvider

还有很多我不记得了(我对编程完全是个业余爱好者)

非常感谢。

共有1个答案

酆翔宇
2023-03-14

最后,它将提供者xml更改为

<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <paths>
        <external-path name="provider" path="/" />
    </paths>
</paths>
 类似资料:
  • 问题内容: 使用数据库时出现问题。当我运行SQLView.java时,出现一个致命异常: 希望有人可以帮助我。我将发布所有与数据库相关的代码。当您需要更多信息时,请告诉我,不要犹豫,索取更多信息! 我认为我的专栏有问题,无法找出原因。 另外,我已经阅读了该网站上的所有相关问题,但是我找不到应该在何处声明我的列以及要添加/更改的内容。有人知道怎么做吗?:) 首先:我的数据库类: SQLite类,用于

  • 问题内容: 我正在创建一个使用SQLiteDatabase来存储项目的应用程序。但是,从数据库中填充数据时出现错误,应用崩溃。 这是我的数据库- Note.java- NotesDatabase.java- 这是LogCat错误日志- 请帮助我找出我的代码出了什么问题。提前致谢!! 问题答案: 您的主题行具有误导性。您的堆栈跟踪中的异常说 这实际上意味着无法在中找到指定的列,并且-1作为列索引返回

  • 您好,我在读取每行包含3列的csv文件时遇到问题。我似乎无法将最后一个单元格(3)解析为整数,即使它始终是一个“可解析”字符串:Berlin,Buenos Aires,7402我似乎无法得到7402编译器抛出的所有结果是: “在java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:68

  • 本文向大家介绍通过openpyxl读取excel文件过程解析,包括了通过openpyxl读取excel文件过程解析的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了通过openpyxl读取excel文件过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1、环境准备 python3环境、安装openpyxl模块 2、excel文件数

  • 我尝试安装java并使用XLConnect包mmethods(两者都是),但是我得到了如下所示的错误: 我绝对不是试图加载一个空文件,我绝对有访问/权限从文件位置读取。我可能做错了什么? R read_excel:libxls错误:无法解析文件