Accessing the phonebook on Galaxy S crashes the ap

2019-08-25 22:14发布

问题:

Does anyone know how to access the contacts from the Galaxy S?

I have this line of code:

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

and it works on the emulator as well as on the Samsung i5700. I tried running my app on Samsung i9000 (Galaxy S) but it crashes.

I am getting the following error from 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)

I tried accessing the phonebook from the launcher, and this is what I get:

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)

Based on those logs, I am guessing that the phone does not use the default contacts application and it does not handle the intent I am firing from my app.

I tried changing the URI I am passing to the intent, but it doesn't work either.

Has anybody else seen this problem? Any suggestions on what I can try next?

Thank you! - Zarah

回答1:

Try ContactsContract.Contacts.CONTACTS_URI instead. You are using the Android 1.x API, and it is possible Samsung failed to test that sufficiently. My understanding is that the Samsung Galaxy S is an Android 2.x device.



回答2:

we did a small fix but hoping that samsung will have it updated (we did catched that for the exception part soon)

use ComponentName



回答3:

Try this... It worked for me. (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);

Then start your activity...