下面的代碼在L上工作正常,但在M版本上不起作用。Android M設置db LIKE關鍵字查詢錯誤
public void test() {
ContentResolver resolver = getContentResolver();
String[] proj = {
Settings.System.NAME,
Settings.System.VALUE};
String sql = proj[1] + " LIKE 'content%'";
Cursor cursor = resolver.query(Settings.System.CONTENT_URI,
proj,sql,null,null);
while(cursor.moveToNext()) {
String key = cursor.getString(cursor.getColumnIndex(proj[0]));
String value = cursor.getString(cursor.getColumnIndex(proj[1]));
Log.e(TAG,"" + key + "->" + value);
}
cursor.close();
}
輸入L版本,輸出是:
11595 01-20 11:55:36.322 15833 15833 E MyExam : alarm_alert->content://media/internal/audio/media/11
11596 01-20 11:55:36.322 15833 15833 E MyExam : notification_sound->content://media/internal/audio/media/24
11597 01-20 11:55:36.322 15833 15833 E MyExam : ringtone->content://media/internal/audio/media/36
但在併購的釋放,我得到了以下錯誤:
01-20 11:59:29.962 10141 10141 E AndroidRuntime: FATAL EXCEPTION: main
01-20 11:59:29.962 10141 10141 E AndroidRuntime: Process: com.colibri.gaplessplayer, PID: 10141
01-20 11:59:29.962 10141 10141 E AndroidRuntime: java.lang.IllegalArgumentException: Supported SQL:
01-20 11:59:29.962 10141 10141 E AndroidRuntime: uri content://some_table/some_property with null where and where args
01-20 11:59:29.962 10141 10141 E AndroidRuntime: uri content://some_table with query name=? and single name as arg
01-20 11:59:29.962 10141 10141 E AndroidRuntime: uri content://some_table with query name=some_name and null args
01-20 11:59:29.962 10141 10141 E AndroidRuntime: but got - uri:content://settings/system, where:value LIKE 'content%' whereArgs:null
01-20 11:59:29.962 10141 10141 E AndroidRuntime: at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:165)
01-20 11:59:29.962 10141 10141 E AndroidRuntime: at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:135)
01-20 11:59:29.962 10141 10141 E AndroidRuntime: at android.content.ContentProviderProxy.query(ContentProviderNative.java:421)
01-20 11:59:29.962 10141 10141 E AndroidRuntime: at android.content.ContentResolver.query(ContentResolver.java:491)
01-20 11:59:29.962 10141 10141 E AndroidRuntime: at android.content.ContentResolver.query(ContentResolver.java:434)
我應該如何改變我的代碼,兩個大號工作和M?
也許你沒有。 「ContentProvider」不需要支持任意SQL,因爲「ContentProvider」不需要將其數據存儲在SQL數據庫中。據推測,無論是設置已將其數據移動到非SQL數據存儲區,還是正在進行工作以爲將來的交換機做好準備。 – CommonsWare