某些使用电子邮件联系人选择器的用户会发生异常

Cat*_*ine 10 android

我试图允许我的用户从他们的联系人中选择具有电子邮件地址的联系人.这是单击相应按钮时执行的代码:

Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.CommonDataKinds.Email.CONTENT_URI);
startActivityForResult(intent, PICK_CONTACT);
Run Code Online (Sandbox Code Playgroud)

这在我自己的手机上工作正常,但在发布我的应用程序后,我发现我的一些用户发生了以下异常:

0       android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.PICK dat=content://com.android.contacts/data/emails }
1   at  android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1638)
2   at  android.app.Instrumentation.execStartActivity(Instrumentation.java:1510)
3   at  android.app.Activity.startActivityForResult(Activity.java:3244)
4   at  com.fitrocket.android.InviteMethodSelectionAct.onClick(InviteMethodSelectionAct.java:59)
5   at  android.view.View.performClick(View.java:3549)
6   at  android.view.View$PerformClick.run(View.java:14400)
7   at  android.os.Handler.handleCallback(Handler.java:605)
8   at  android.os.Handler.dispatchMessage(Handler.java:92)
9   at  android.os.Looper.loop(Looper.java:154)
10  at  android.app.ActivityThread.main(ActivityThread.java:4945)
11  at  java.lang.reflect.Method.invokeNative(Native Method)
12  at  java.lang.reflect.Method.invoke(Method.java:511)
13  at  com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
14  at  com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
15  at  dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)

我自己无法重现这一点,所以我想知道是否有人能告诉我这可能是什么问题?

Muz*_*ant 3

不完全是您正在寻找的解决方案,但在使用 ACTION_PICK 意图选择应用程序时,同样的事情也发生在我身上。通常,会发生的情况是,活动需要很长时间才能启动,没有(明显)原因,有时只是崩溃并出现“未找到活动”异常。我最终做的是构建自己的活动来列出可用的应用程序。在您的情况下,您可能可以对联系人执行相同的操作,使用光标查询所有带有电子邮件的联系人,并显示一个对话框/活动以允许用户选择。听起来像是一个糟糕的解决方法,但可能是最快实现的......(请参阅此处的示例代码)

另一种方法是联系这些用户,看看他们是否有可能不支持该ContactsContract.CommonDataKinds.Email.CONTENT_URI内容类型的自定义联系人应用程序。