나는이 질문을 많이 연구했습니다. 실제로이 작업이 완벽하게 수행되었지만 갑자기 작동하지 않습니다.안드로이드 연락처 선택 도구 - 이름 및 번호 검색
연락처 선택 도구를 사용하여 연락처의 이름과 번호를 다시 얻으려고합니다. 나는 이름과 번호를 얻고 그것을 내 앱에서 사용하고 싶다.
는이 질문에 대한 답변에서 코드를 사용 : Selecting a number from user with multiple numbers when using the contact picker내가 접촉 선택기를 열려고하면, 내가 NullPointerException이 얻을.
여기 내 코드입니다 :
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Uri result = data.getData(); //this is line 71
// get the phone number id from the Uri
String id = result.getLastPathSegment();
// query the phone numbers for the selected phone number id
Cursor c = getContentResolver().query(Phone.CONTENT_URI, null, Phone._ID + "=?", new String[]{id}, null);
int phoneIdx = c.getColumnIndex(Phone.NUMBER);
int nameIdx = c.getColumnIndex(Phone.DISPLAY_NAME);
if(c.getCount() == 1) { // contact has a single phone number
// get the only phone number
if(c.moveToFirst()) {
phoneNumber = c.getString(phoneIdx);
contact = c.getString(nameIdx);
//set text of view to name and number
contactInfo.setText(contact + ": " + phoneNumber);
} else {
Toast.makeText(getApplicationContext(), "There are no contacts to choose from.", Toast.LENGTH_SHORT).show();
}
}
}
로그 캣 :
01-02 17:42:53.005: E/AndroidRuntime(3509): Uncaught handler: thread main exiting due to uncaught exception
01-02 17:42:53.025: E/AndroidRuntime(3509): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1001, result=0, data=null} to activity {com.MyActivity/com.mystuff.MyActivity}: java.lang.NullPointerException
01-02 17:42:53.025: E/AndroidRuntime(3509): at android.app.ActivityThread.deliverResults(ActivityThread.java:3329)
01-02 17:42:53.025: E/AndroidRuntime(3509): at android.app.ActivityThread.handleSendResult(ActivityThread.java:3371)
01-02 17:42:53.025: E/AndroidRuntime(3509): at android.app.ActivityThread.access$2700(ActivityThread.java:119)
01-02 17:42:53.025: E/AndroidRuntime(3509): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1893)
01-02 17:42:53.025: E/AndroidRuntime(3509): at android.os.Handler.dispatchMessage(Handler.java:99)
01-02 17:42:53.025: E/AndroidRuntime(3509): at android.os.Looper.loop(Looper.java:123)
01-02 17:42:53.025: E/AndroidRuntime(3509): at android.app.ActivityThread.main(ActivityThread.java:4363)
01-02 17:42:53.025: E/AndroidRuntime(3509): at java.lang.reflect.Method.invokeNative(Native Method)
01-02 17:42:53.025: E/AndroidRuntime(3509): at java.lang.reflect.Method.invoke(Method.java:521)
01-02 17:42:53.025: E/AndroidRuntime(3509): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
01-02 17:42:53.025: E/AndroidRuntime(3509): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
01-02 17:42:53.025: E/AndroidRuntime(3509): at dalvik.system.NativeStart.main(Native Method)
01-02 17:42:53.025: E/AndroidRuntime(3509): Caused by: java.lang.NullPointerException
01-02 17:42:53.025: E/AndroidRuntime(3509): at com.emergencydialer.MainEmergencyDialerActivity.onActivityResult(MyActivity.java:71)
01-02 17:42:53.025: E/AndroidRuntime(3509): at android.app.Activity.dispatchActivityResult(Activity.java:3828)
01-02 17:42:53.025: E/AndroidRuntime(3509): at android.app.ActivityThread.deliverResults(ActivityThread.java:3325)
내가 코멘트와 내 코드에 라인 (71)을 표시했다. 이 코드가 어제 완벽하게 작동했기 때문에 이것은 실망 스럽습니다. 내가 한 일을 확신하지 못하고 데이터가 null을 반환하는 이유를 모르겠습니다. 어떤 아이디어?
확인을 던질 때마다 확인해야합니다. 왜 또는 어떻게 고쳐야할지 잘 모르겠다. 그리고 나는 이제 stackoverflow에서 여러 개의 답변을 복사하여 붙여 넣기하여 연락처 정보를 얻었으며 모두 RESULT_CANCELED를 반환합니다. –
활동을 시작하는 방법에 대한 더 많은 코드를 보여줄 수 있습니까? – ben