【发布时间】:2015-04-17 06:43:36
【问题描述】:
作为我正在进行的一个简单练习程序的一部分,我想从我的手机联系人中检索数据,特别是选定联系人的电话号码,或者如果有多个联系人,则全部检索。
我首先启动联系人应用程序并允许选择联系人。我有一个块,经过尝试和验证,可以选择联系人的默认号码(或者如果有一个,则为一个),但如果联系人有很多,我想列出所有号码。我完全脱离了我的元素,但是一旦这个 sn-p 启动并运行,我应该回到它。
我首先启动联系人应用程序以选择联系人:
void getNewTxtAlarmFromContacts(){
Intent intent = new Intent(Intent.ACTION_PICK,
ContactsContract.CommonDataKinds.Phone.CONTENT_URI);
startActivityForResult(intent, REQUEST_CONTACT_PICKER);
}
然后寻求使用以下 sn-p 处理结果:(修改来源:All phone numbers of one contact for startActivityForResult):
String id = contactData.getLastPathSegment();
Cursor phoneCur = getContentResolver()
.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID
+ " = ?", new String[] { id },
null);
final ArrayList<String> phonesList = new ArrayList<String>();
while (phoneCur.moveToNext()) {
String phone = phoneCur
.getString(phoneCur
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DATA));
phonesList.add(phone);
}
phoneCur.close();
现在,我已将此块设置为首先,如在源中,检查接收到的数据是否不为空。接下来的几行,一直到光标的关闭,是我使用上面的 sn-p 的真正目的。他们应该检索特定联系人的所有号码,即之前选择的那个。它们后面是 if-else 结构,只是为了让我可以随心所欲地处理数字。我的困难围绕着光标所在的那些行。我相信问题可能在于
.query()
调用,因为我的功能代码,只选择默认数字的代码,只使用第一个参数。我一直收到以下错误。
02-16 11:53:01.988 3192-3192/com.naja.meno.william.notificationalarm E/ActivityThread﹕ Performing stop of activity that is not resumed: {com.naja.meno.william.notificationalarm/com.naja.meno.william.notificationalarm.StartMenu}
java.lang.RuntimeException: Performing stop of activity that is not resumed: {com.naja.meno.william.notificationalarm/com.naja.meno.william.notificationalarm.StartMenu}
at android.app.ActivityThread.performStopActivityInner(ActivityThread.java:3362)
at android.app.ActivityThread.handleStopActivity(ActivityThread.java:3449)
at android.app.ActivityThread.access$1200(ActivityThread.java:169)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1307)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5487)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
at dalvik.system.NativeStart.main(Native Method)
在广泛的 catch 处理程序捕获此错误后,系统恢复并执行第一个 if,这表明没有数据可以找到,即使我只选择了具有许多电话号码的联系人。
我不确定我知道为什么会发生此错误。最终结果应该是我有一个包含所有相关数字的 ArrayList。
虽然可能是其他原因,但鉴于我的日志没有提供对错误站点的引用。根据错误,我不明白我正在停止什么活动,以及我能做什么。但这就是我在这里的原因。我希望有人能帮帮忙。谢谢。
【问题讨论】:
标签: java android cursor android-contacts runtimeexception