这些天我做了很多谷歌搜索,但我无法解决这个问题。我正在编写一个应用程序和一个小部件,当用户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=content://com.android.contacts/contacts/lookup/0n4D29415739 flg=0x14200000 的活动(有附加功能)
(我省略了 logcat 的其余部分,但如果你们需要,我可以把它放回去)
当我在 Froyo 上尝试完全相同的代码时,它就可以工作。我不想让我的应用程序只针对 Froyo 用户 - 我将 2.1 定位为最低操作系统级别。我发现 Stack Overflow 上的其他一些人正在努力让 QuickContacts 显示。
我可以使用 QuickContactBadge,这确实适用于 Eclair,但我不允许在 AppWidget 中使用 QuickContactBadge,所以我必须这样做。我翻阅了 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 以来就一直存在。有人能帮我一下吗??
非常感谢!!!