【发布时间】:2016-11-08 06:13:27
【问题描述】:
执行将新数据插入内容提供程序时出错,请参见下面的代码,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)
谁能告诉我为什么?提前致谢。
【问题讨论】:
-
请从您的主活动中指定第 48 行。如您的堆栈跟踪中所述,错误在该行中。
-
第 48 行是 getContentResolver().insert(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,values),谢谢回复
-
我 - 几乎 - 确定在
ContentProvider类上调用了lastIndexOf(),它使用URI参数找出与请求相关的数据/id/... ,但我无法解释,为什么它会为空?我的意思是URI为空?传递的值是MediaStore.Audio.Media.EXTERNAL_CONTENT_URI这是 API 常量?!它怎么可能是空的? -
首先感谢您的回复,我想问题可能出在 MediaStore 的 uri 上。声音的。媒体。 EXTERNAL_CONTENT_URI,但该 uri 只是我发现要插入的一个。那么如果这种方式很麻烦,如何将标题、艺术家等音乐信息插入到内容提供者中呢?
-
您找到解决此问题的方法了吗?
标签: android