Я много гуглял за эти дни и не смог решить эту проблему. Я пишу приложение и виджет, в котором нужно, чтобы диалоговое окно быстрого контакта отображалось, когда пользователь нажимает ImageView
или какой-либо другой элемент представления, вызывая QuickContact.showQuickContact()
. По какой-то причине, каждый раз, когда я пробую Eclair, я получаю следующую ошибку:
01-02 17: 51: 28.869: ОШИБКА / AndroidRuntime (657):
java.lang.RuntimeException: Невозможно начать деятельность
ComponentInfo {com.sx.favwidget / com.sx.favwidget.PopupActivity}:
android.content.ActivityNotFoundException: не найдено действий для обработки
Intent {act = com.android.contacts.action.QUICK_CONTACT
DAT = содержание: //com.android.contacts/contacts/lookup/0n4D29415739
flg = 0x14200000 (есть дополнения)
(я пропустил остальную часть logcat, но я могу вернуть его обратно, если вам, ребята, это нужно)
Когда я пробую точно такой же код на Froyo, он просто работает. Я не хочу, чтобы мое приложение предназначалось только для пользователей Froyo - я нацеливаюсь на 2.1 как минимальный уровень ОС. Я обнаружил, что некоторые другие люди из Переполнения стека пытаются справиться с отображением QuickContacts.
Я мог бы использовать QuickContactBadge, и это работает на Eclair, но мне не разрешен QuickContactBadge в AppWidget, поэтому я должен сделать это вместо этого. Я покопался в исходном коде Android и нашел соответствующие XML-файлы и код для создания макета, но я не могу просто скомпилировать его сам, потому что это огромная головная боль со всеми вызовами частного API.
Вот мой код. Это просто.
grid.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
String name = ((TextView)v.findViewById(R.id.grid_item_label)).getText().toString();
Cursor sc = getContentResolver().query(Contacts.CONTENT_URI, new String[] {Contacts.LOOKUP_KEY, Contacts._ID}, Contacts.DISPLAY_NAME + "= ?", new String[] {name}, null);
sc.moveToFirst();
String lookup_key = sc.getString(sc.getColumnIndex(Contacts.LOOKUP_KEY));
Uri uri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_LOOKUP_URI, lookup_key);
QuickContact.showQuickContact(getApplicationContext(), v, uri, QuickContact.MODE_SMALL, null);
}
}
Просто так странно, что он работает на Froyo, а не на Eclair, но вызов API существует с Android 2.0. Может ли кто-нибудь помочь мне здесь ??
Большое спасибо !!!