2017-05-22 11 views
0

私はedittextに連絡先を追加しようとしています。連絡先を呼び出すためにOnclickeventを使用しました。そして連絡先が選択されると、それはedittextに書き込まれます。私はそれを行うことができないんだけど、下の私のOnactivity結果で、連絡先が私のedittextに表示されない

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (resultCode == RESULT_OK) { 
     switch (requestCode) { 
      case CONTACT_PICKER_RESULT: 
       Cursor cursor = null; 
       String name = ""; 
       try { 
        Uri result = data.getData(); 
        //writeToFile("uri" +result); 
        String id = result.getLastPathSegment(); 

        // query for name 
        cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
          null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=?", new String[] { id }, 
          null); 

        if (cursor != null && cursor.moveToFirst()) 
        { 
         int phoneIdx = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DATA); 
         int nameIdx = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME); 
         writeToFile("ifcursor" +phoneIdx+nameIdx); 
         name = cursor.getString(nameIdx); 
        } 



       } catch (Exception e) { 
        //Log.e(DEBUG_TAG, "Failed to get name", e); 
       } finally { 
        if (cursor != null) { 
         cursor.close(); 
        } 
        // phNo = (EditText) findViewById(R.id.phone_number); 
        phNo.setText(name); 
        if (name.length() == 0) { 
         Toast.makeText(getApplicationContext(),"Name not found for contact.",Toast.LENGTH_LONG).show(); 
        } 

       } 

       break; 
     } 

    } else { 
     //Log.w(DEBUG_TAG, "Warning: activity result not ok"); 
    } 
} 

任意の助けを深く理解されるだろう、

答えて

0

を「見つからない名前」のそれstucksこの1

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     // Check which request it is that we're responding to 
     if (requestCode == PICK_CONTACT_REQUEST) { 
      // Make sure the request was successful 
      if (resultCode == RESULT_OK) { 
       // Get the URI that points to the selected contact 
       Uri contactUri = data.getData(); 
       // We only need the NUMBER column, because there will be only one row in the result 
       String[] projection = {Phone.NUMBER}; 

       // Perform the query on the contact to get the NUMBER column 
       // We don't need a selection or sort order (there's only one result for the given URI) 
       // CAUTION: The query() method should be called from a separate thread to avoid blocking 
       // your app's UI thread. (For simplicity of the sample, this code doesn't do that.) 
       // Consider using CursorLoader to perform the query. 
       Cursor cursor = getContentResolver() 
         .query(contactUri, projection, null, null, null); 
       cursor.moveToFirst(); 

       // Retrieve the phone number from the NUMBER column 
       int column = cursor.getColumnIndex(Phone.DISPLAY_NAME); 
       String number = cursor.getString(column); 
        phNo.setText(number); 


       // Do something with the phone number... 
      } 
     } 
    } 
+0

それは結果を提供し、障害を言い、無効な列DATA1 –

+0

してみてくださいnow/.................. –

+0

@jaikhambhayta Contactsテーブルから電話番号を問い合わせることはできません。クエリはCommonDataKinds.Phone.CONTENT_URIになければなりません電話番号が – marmor

0
をお試しください

ユーザーにpが必要な場合電話番号と接触ICK、あなたは以下の意図を呼び出す必要があります。そして、あなたはそのようonActivityResultで応答を処理することができます

Intent i = new Intent(Intent.ACTION_PICK, Phone.CONTENT_URI); 
startActivityForResult(i, CONTACT_PICKER_RESULT); 

を:

Uri result = data.getData(); 
// because we asked for a Phone.CONTENT_URI picker, we'll get a uri for a Phone._ID entry 
String id = result.getLastPathSegment(); 
String[] projection = new String[] { Phone.DISPLAY_NAME, Phone.NUMBER }; 
String selection = Phone._ID + "=" + id; 
Cursor cursor = getContentResolver().query(Phone.CONTENT_URI, projection, selection,null, null); 

if (cursor != null && cursor.moveToFirst()) { 
    String name = cursor.getString(0); 
    String number = cursor.getString(1); 
    Log.d("MyActivity", "got name=" + name + ", phone=" + number); 
} 
if (cursor != null) { 
    cursor.close(); 
} 
+0

さんはcontacts.contracts.phoneと電話だけの違いを教えてください私はそれが間違ったクラスに自動インポートされたと推測しています –

+0

であることを確認しているので、 – marmor

+0

これは連絡先を取得しますが、私が選択したものではなく、if()の後にph.edittextを使用しました。 {cursor.close()}、何か間違っていますか? –

関連する問題