问题描述
我使用 itext pdf 库创建了一个 pdf 文件,并将生成的 pdf 文件保存在下载目录中。但它没有保存在运行 android api 级别 29 及更高级别的设备中,下面给出了相同的错误。
E/sqliteDatabase: Error inserting bucket_display_name=Download owner_package_name=com.xyz.maninventory parent=12 volume_name=external_primary _display_name=invoice.pdf mime_type=application/pdf _data=/storage/emulated/0/Download/invoice.pdf title=invoice group_id=1960198957 is_download=true position=0 date_added=1620469149 primary_directory=Download bucket_id=540528482 media_type=10003 relative_path=Download/
android.database.sqlite.sqliteConstraintException: UNIQUE constraint Failed: files._data (code 2067 sqlITE_CONSTRAINT_UNIQUE)
at android.database.sqlite.sqliteConnection.nativeExecuteForLastInsertedRowId(Native Method)
at android.database.sqlite.sqliteConnection.executeForLastInsertedRowId(sqliteConnection.java:879)
at android.database.sqlite.sqliteSession.executeForLastInsertedRowId(sqliteSession.java:790)
at android.database.sqlite.sqliteStatement.executeInsert(sqliteStatement.java:88)
at android.database.sqlite.sqliteDatabase.insertWithOnConflict(sqliteDatabase.java:1625)
at android.database.sqlite.sqliteDatabase.insert(sqliteDatabase.java:1494)
at com.android.providers.media.MediaProvider.insertFile(MediaProvider.java:3455)
at com.android.providers.media.MediaProvider.insertInternal(MediaProvider.java:4085)
at com.android.providers.media.MediaProvider.insert(MediaProvider.java:3674)
at android.content.ContentProvider$Transport.insert(ContentProvider.java:313)
at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:180)
at android.os.Binder.execTransactInternal(Binder.java:1021)
at android.os.Binder.execTransact(Binder.java:994)
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
ContentResolver resolver=getContentResolver();
ContentValues contentValues=new ContentValues();
contentValues.put(MediaStore.Downloads.disPLAY_NAME,"invoice.pdf");
contentValues.put(MediaStore.Downloads.MIME_TYPE,"application/pdf");
Uri uri = resolver.insert(MediaStore.Downloads.getContentUri("external"),contentValues);
}else if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS),"invoice.pdf");
}
提前致谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)