执行ContentResolver插入时出错

时间:2016-11-08 06:13:27

标签: android

执行将新数据插入内容提供程序时出错,请参阅下面的代码,PS。我只是将下面的代码直接放入Activity的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)

有人可以告诉我为什么吗?提前谢谢。

1 个答案:

答案 0 :(得分:2)

我在android Q(API 29)之前遇到相同的错误

如果要将文件下载到媒体存储区中,则Android PRE PRE(Q Api 29)的内容值中应包括...

    val directory = mContext.getExternalFilesDir(Environment.DIRECTORY_MUSIC)

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

Api 29及更高版本省略DATA值。