Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 执行ContentResolver插入时出错_Android - Fatal编程技术网

Android 执行ContentResolver插入时出错

Android 执行ContentResolver插入时出错,android,Android,执行将新数据插入内容提供程序时出错,请参阅下面的代码,PS。我只是将下面的代码直接放入活动的onCreate()中,然后执行 ContentValues values=new ContentValues(); values.put(MediaStore.Audio.Media.TITLE,"Example Song"); values.put(MediaStore.Audio.Media.ARTIST,"Unknown"); getContentResolver().insert(MediaS

执行将新数据插入内容提供程序时出错,请参阅下面的代码,PS。我只是将下面的代码直接放入活动的onCreate()中,然后执行

ContentValues values=new ContentValues();
values.put(MediaStore.Audio.Media.TITLE,"Example Song");
values.put(MediaStore.Audio.Media.ARTIST,"Unknown");

getContentResolver().insert(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,values);
只需简单地插入新的歌曲数据,但下面出现了错误

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.lastIndexOf(int)' on a null object reference
at android.os.Parcel.readException(Parcel.java:1605)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:183)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:135)
at android.content.ContentProviderProxy.insert(ContentProviderNative.java:476)
at android.content.ContentResolver.insert(ContentResolver.java:1254)
at com.example.flover.contentproviderdemo.MainActivity.onCreate(MainActivity.java:48)

谁能告诉我为什么?提前感谢。

在android Q(API 29)之前,我也遇到了同样的错误

如果您正在将文件下载到媒体商店Android Q(Api 29)之前的版本,请将其包含在您的内容值中

    val directory = mContext.getExternalFilesDir(Environment.DIRECTORY_MUSIC)

    contentValues.put(MediaStore.Audio.AudioColumns.DATA, "${directory}${song?.title}")

Api 29及以上版本省略了数据值。

请指定主活动的行号48。错误就在那一行,正如堆栈跟踪中提到的。第48行是getContentResolver().insert(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,values),感谢您的回复。我几乎可以肯定
ContentProvider
类调用了
lastIndexOf()
,它使用
URI
参数来找出哪个数据/id/。。。与请求相关,但我无法解释的是,为什么它会为空?我的意思是
URI
为空?传递的值是
MediaStore.Audio.Media.EXTERNAL\u CONTENT\u URI
这是API常量?!它怎么可能是空的呢?首先感谢你的回复,我想问题应该是uri,它是MediaStore。音频媒体外部内容URI,但该URI是我找到的唯一要插入的URI。所以,如果这种方式遇到问题,如何将音乐信息(如标题、艺术家)插入内容提供商?您找到解决此问题的方法了吗?这对我很有效,非常感谢。就我个人的理解而言,这是否有文档记录?