访问Galaxy S上的电话簿会使应用程序崩溃

时间:2010-08-23 11:34:50

标签: android android-intent contacts

有没有人知道如何从Galaxy S访问联系人?

我有这行代码:

Intent intent = new Intent(Intent.ACTION_VIEW, Contacts.CONTENT_URI);
startActivity(intent);

它可以在模拟器和三星i5700上运行。我尝试在三星i9000(Galaxy S)上运行我的应用程序,但它崩溃了。

我从LogCat收到以下错误:

08-23 11:28:19.511: INFO/ActivityManager(2234): Starting activity: Intent { act=android.intent.action.VIEW dat=content://com.android.contacts/contacts }
08-23 11:28:19.516: DEBUG/AndroidRuntime(5067): Shutting down VM
08-23 11:28:19.516: WARN/dalvikvm(5067): threadid=3: thread exiting with uncaught exception (group=0x4001dc20)
08-23 11:28:19.516: ERROR/AndroidRuntime(5067): Uncaught handler: thread main exiting due to uncaught exception
08-23 11:28:19.526: INFO/Lights(2234): set_light_backlight[0~255]:(42) gamma_value:(4) BRIGHTNESS_MODE(1)
08-23 11:28:19.526: VERBOSE/AudioHardwareALSA(2183): ------------------------>>>>>> ALSA OPEN mode 0,device 2 
08-23 11:28:19.526: ERROR/AndroidRuntime(5067): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=content://com.android.contacts/contacts }
08-23 11:28:19.526: ERROR/AndroidRuntime(5067):     at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1408)
08-23 11:28:19.526: ERROR/AndroidRuntime(5067):     at android.app.Instrumentation.execStartActivity(Instrumentation.java:1378)
08-23 11:28:19.526: ERROR/AndroidRuntime(5067):     at android.app.Activity.startActivityForResult(Activity.java:2758)
08-23 11:28:19.526: ERROR/AndroidRuntime(5067):     at android.app.Activity.startActivity(Activity.java:2864)
08-23 11:28:19.526: ERROR/AndroidRuntime(5067):     at au.com.orionmedia.vidcall.KeypadActivity.onClick(KeypadActivity.java:313)
08-23 11:28:19.526: ERROR/AndroidRuntime(5067):     at android.view.View.performClick(View.java:2417)
08-23 11:28:19.526: ERROR/AndroidRuntime(5067):     at android.view.View.onTouchEvent(View.java:4232)
08-23 11:28:19.526: ERROR/AndroidRuntime(5067):     at android.view.View.dispatchTouchEvent(View.java:3762)
08-23 11:28:19.526: ERROR/AndroidRuntime(5067):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
08-23 11:28:19.526: ERROR/AndroidRuntime(5067):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
08-23 11:28:19.526: ERROR/AndroidRuntime(5067):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
08-23 11:28:19.526: ERROR/AndroidRuntime(5067):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
08-23 11:28:19.526: ERROR/AndroidRuntime(5067):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
08-23 11:28:19.526: ERROR/AndroidRuntime(5067):     at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1713)
08-23 11:28:19.526: ERROR/AndroidRuntime(5067):     at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1131)
08-23 11:28:19.526: ERROR/AndroidRuntime(5067):     at android.app.Activity.dispatchTouchEvent(Activity.java:2070)
08-23 11:28:19.526: ERROR/AndroidRuntime(5067):     at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1697)
08-23 11:28:19.526: ERROR/AndroidRuntime(5067):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1691)
08-23 11:28:19.526: ERROR/AndroidRuntime(5067):     at android.os.Handler.dispatchMessage(Handler.java:99)
08-23 11:28:19.526: ERROR/AndroidRuntime(5067):     at android.os.Looper.loop(Looper.java:123)
08-23 11:28:19.526: ERROR/AndroidRuntime(5067):     at android.app.ActivityThread.main(ActivityThread.java:4363)
08-23 11:28:19.526: ERROR/AndroidRuntime(5067):     at java.lang.reflect.Method.invokeNative(Native Method)
08-23 11:28:19.526: ERROR/AndroidRuntime(5067):     at java.lang.reflect.Method.invoke(Method.java:521)
08-23 11:28:19.526: ERROR/AndroidRuntime(5067):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:862)
08-23 11:28:19.526: ERROR/AndroidRuntime(5067):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)
08-23 11:28:19.526: ERROR/AndroidRuntime(5067):     at dalvik.system.NativeStart.main(Native Method)

我尝试从启动器访问电话簿,这就是我得到的:

08-23 17:50:53.885: INFO/ActivityManager(2244): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.android.contacts/com.sec.android.app.contacts.PhoneBookTopMenuActivity }
08-23 17:50:54.055: INFO/ContactsListActivity(2401): Called with action: com.android.contacts.action.LIST_DEFAULT
08-23 17:50:54.205: INFO/ActivityManager(2244): Displayed activity com.android.contacts/com.sec.android.app.contacts.PhoneBookTopMenuActivity: 208 ms (total 1265628 ms)

基于这些日志,我猜测手机没有使用默认的联系人应用程序,它不能处理我从我的应用程序中解雇的意图。

我尝试更改我传递给intent的URI,但它也不起作用。

还有其他人看过这个问题吗?关于我接下来可以尝试什么的任何建议?

谢谢! - 扎拉

3 个答案:

答案 0 :(得分:0)

请尝试使用ContactsContract.Contacts.CONTACTS_URI。您使用的是Android 1.x API,三星未能对此进行充分测试。我的理解是三星Galaxy S是Android 2.x设备。

答案 1 :(得分:0)

我们做了一个小修复,但希望三星会更新它(我们很快就抓住了异常部分)

使用ComponentName

答案 2 :(得分:0)

试试这个...它对我有用。 (GALAXY S)

Intent intent = new Intent();
intent.setAction(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
ComponentName componentName = new ComponentName("com.android.contacts", "com.sec.android.app.contacts.PhoneBookTopMenuActivity");
intent.setComponent(componentName);

然后开始你的活动......