2010-08-23 3 views
0

Est-ce que quelqu'un sait comment accéder aux contacts du Galaxy S?Accéder à l'annuaire sur Galaxy S bloque l'application

J'ai cette ligne de code:

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

et il fonctionne sur l'émulateur, ainsi que sur le Samsung i5700. J'ai essayé d'exécuter mon application sur Samsung i9000 (Galaxy S), mais il se bloque.

Je reçois l'erreur suivante de 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) 

J'ai essayé d'accéder au répertoire du lanceur, ce qui est ce que je reçois:

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) 

Sur la base de ces journaux, je suis deviner que le téléphone n'utilise pas l'application de contacts par défaut et ne gère pas l'intention que je tire de mon application.

J'ai essayé de changer l'URI que je passe à l'intention, mais cela ne fonctionne pas non plus.

Est-ce que quelqu'un d'autre a vu ce problème? Des suggestions sur ce que je peux essayer ensuite?

Merci! - Zarah

Répondre

0

Essayez plutôt ContactsContract.Contacts.CONTACTS_URI. Vous utilisez l'API Android 1.x, et il est possible que Samsung n'a pas testé suffisamment. Ma compréhension est que le Samsung Galaxy S est un appareil Android 2.x.

+0

Salut @CommonsWare! J'ai omis de mentionner que j'ai aussi essayé d'utiliser cela, mais j'ai toujours la même exception que ci-dessus. Vous avez raison, Samsung Galaxy S est Android 2.1. Ce qui me déroute dans ce cas est que mon autre téléphone de test, Samsung Galaxy Spica est également Android 2.1 et mon intention fonctionne là-bas. Je suis vraiment perdue et je ne sais plus quoi faire. – Zarah

+0

@Zarah: il se trouve que cela a déjà été signalé, et j'ai déposé un bug pour obtenir le CTS corrigé pour le problème de compatibilité de Samsung: http://code.google.com/p/android/issues/detail?id=10143 You peut utiliser 'PackageManager' et' queryIntentActivities() 'pour tester si' Intent' correspondra à n'importe quoi, puis désactiver le choix du menu ou le bouton ou tout ce qui déclenche le chemin du code où vous essayez de démarrer l'activité. – CommonsWare

+0

Merci! J'ai mis en œuvre ce que vous avez suggéré et il suffit de définir le bouton à View.GONE pour éviter toute confusion. :) J'espère que cela se corrige bientôt! – Zarah

0

nous avons fait une petite solution, mais en espérant que Samsung aura à jour (nous avons que pour la intercepté l'une partie d'exception bientôt)

utilisation de ComponentName

0

Try this ... Il a travaillé pour moi. (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); 

Puis commencez votre activité ...

+0

Salut @ technofonc, cela signifie-t-il que vous vérifiez d'abord si le modèle de téléphone est Galaxy S? Ou va définir l'intention de cette façon de travailler pour d'autres modèles de téléphone ainsi? Merci! – Zarah

+0

Salut Zarah. Vous devez vérifier le modèle du téléphone. Ceci est explicitement pour le Samsung Galaxy S (ou d'autres téléphones qui utilisent la même version). Espérons que cela aide ... – technofunc

+0

Essayez quelque chose comme ceci: if (Build.DEVICE.equals ("GT-I9000")) {...} – technofunc

Questions connexes