getData() возвращает ноль в поставщике предложений Android
Я пытаюсь сделать поставщика предложений в Android. Предложения отображаются в зависимости от введенного мною текста (эта часть уже выполнена), но когда я хочу восстановить данные (их _id) из провайдера контента, инструкция getData() возвращает ноль.
В предложении Offertion Provider я присваиваю значения SUGGEST_COLUMN_TEXT_1,SUGGEST_COLUMN_TEXT_2 и SUGGEST_COLUMN_INTENT_DATA_ID:
HashMap<String,String> map = new HashMap<String,String>();
SQLiteQueryBuilder builder = new SQLiteQueryBuilder();
builder.setTables("place");
Map<String, String> projectionMap = new HashMap<String, String>();
projectionMap.put(Place.COL_NAME, Place.COL_NAME+" AS " + SearchManager.SUGGEST_COLUMN_TEXT_1);
projectionMap.put(Place.COL_ADDRESS, Place.COL_ADDRESS+" AS " + SearchManager.SUGGEST_COLUMN_TEXT_2);
projectionMap.put("_id", "_id" + " AS " + SearchManager.SUGGEST_COLUMN_INTENT_DATA_ID);
projectionMap.put("_id", "_id");
builder.setProjectionMap(projectionMap);
И в SearchableActivity я использую getDataString() или getData(), но они возвращают ноль:
private void handleIntent(Intent intent)
{
if (Intent.ACTION_VIEW.equals(intent.getAction()))
{
Log.w("test",intent.getDataString()+"a");
}
else if (Intent.ACTION_SEARCH.equals(intent.getAction()))
{
...
}
}
1 ответ
Наконец, после попытки, попытки и попытки я решил это.
Я не знаю почему, но если я напишу "projectionMap.put("_id", "_id"+" AS " + SearchManager.SUGGEST_COLUMN_INTENT_DATA)", getData() возвращает ноль, но когда я использую "projectionMap.put("idPlace", "idPlace"+" AS " + SearchManager.SUGGEST_COLUMN_INTENT_DATA); " getData() возвращает то, что я хотел.
Это мой окончательный код:
SQLiteQueryBuilder builder = new SQLiteQueryBuilder();
builder.setTables("Place");
Map<String, String> projectionMap = new HashMap<String, String>();
projectionMap.put(Place.COL_NAME, Place.COL_NAME+" AS " + SearchManager.SUGGEST_COLUMN_TEXT_1);
projectionMap.put(Place.COL_ADDRESS, Place.COL_ADDRESS+" AS " + SearchManager.SUGGEST_COLUMN_TEXT_2);
projectionMap.put("idPlace", "idPlace"+" AS " + SearchManager.SUGGEST_COLUMN_INTENT_DATA);
projectionMap.put("_id", "_id");
builder.setProjectionMap(projectionMap);
SQLiteDatabase db = clidbh.getWritableDatabase();
String[] fields = {"idPlace AS _id","name","address","idPlace"};
String where = "name like '%"+selectionArgs[0]+"%'";
row = builder.query(db, fields, where, null, null, null, "_id","3");
if (row == null) {
return null;
} else if (!row.moveToFirst()) {
row.close();
return null;
}