Android 执行ContentResolver插入时出错
执行将新数据插入内容提供程序时出错,请参阅下面的代码,PS。我只是将下面的代码直接放入活动的onCreate()中,然后执行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
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。所以,如果这种方式遇到问题,如何将音乐信息(如标题、艺术家)插入内容提供商?您找到解决此问题的方法了吗?这对我很有效,非常感谢。就我个人的理解而言,这是否有文档记录?