0

저는 아직 로그 캣을 보는 데 익숙해 져 있습니다. Android 개발을 배우기 위해 내 연락처에 연락처 앱을 만들고 있는데이 연락처 정보를로드하려고하면 오류가 발생합니다. 할 수 있으면이 logcat을 설명해 주시면 읽어주는 방법을 더 잘 이해할 수있는 좋은 기회가됩니다.이 연락처 앱을 이해할 수 없습니다. logcat

import android.app.Activity; 
import android.database.Cursor; 
import android.net.Uri; 
import android.os.Bundle; 
import android.provider.ContactsContract; 
import android.widget.TextView; 

/** 
* Created by Pete on 6/19/13. 
*/ 
public class ContactDetails extends Activity { 

    TextView tvContactName, tvPhoneNum, tvPhoneType, tvPhoneFull, 
      tvEmailAdd, tvEmailType, tvEmailFull, 
      tvAddress, tvAddType, tvAddFull; 

    String contactId, contactName, phoneType, phoneFull, phoneNum1, 
      emailAdd, emailType, emailFull, 
      address, addType, addFull; 

    //Contact List query arguments 
    Uri uri; 
    String[] projection, selectionArgs; 
    String selection, sortOrder; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.contactinfo); 
     initialize(); 
     contactId = getIntent().getStringExtra("contactId"); 
     contactName = getIntent().getStringExtra("contactName"); 
     new Thread(new Runnable() { 
      @Override 
      public void run() { 
       uri = ContactsContract.Contacts.CONTENT_URI; 
       projection = new String[] { 
         ContactsContract.Data.DISPLAY_NAME, 
         ContactsContract.CommonDataKinds.Phone.NUMBER 
       }; 
       selection = ContactsContract.Data.CONTACT_ID + " = " + contactId + " AND (" + 
         ContactsContract.Data.MIMETYPE + " = '" + 
         ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE + "')"; 
       selectionArgs = null; 
       sortOrder = null; 
       // Create cursor searching for data associated with contactId 
       if (contactId != null) { 
        // Return all the PHONE data for the contact 
        Cursor cursor = getContentResolver().query(
          uri, projection, selection, selectionArgs, sortOrder); 

        //Get the indexes of the required columns 
        while (cursor.moveToNext()) { 
         // Extract the name 
         contactName = cursor.getString(
           cursor.getColumnIndex(ContactsContract.Data.DISPLAY_NAME)); 
         tvContactName.setText(contactName); 
         // Extract the phone number 
         phoneFull = cursor.getString(
           cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
        } 
        tvPhoneFull.post(new Runnable() { 

         @Override 
         public void run() { 
          // TODO Auto-generated method stub 
          tvPhoneFull.setText(phoneFull); 
         } 
        }); 
        cursor.close(); 
       } 
      } 
     }).start(); 

     new Thread(new Runnable() { 
      @Override 
      public void run() { 
       uri = ContactsContract.CommonDataKinds.Email.CONTENT_URI; 
       projection = null; 
       selection = ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = " + contactId + " AND (" + 
         ContactsContract.Data.MIMETYPE + " = '" + 
         ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE + "')"; 
       selectionArgs = null; 
       sortOrder = null; 
       Cursor emailCursor = getContentResolver().query(uri, projection, selection, selectionArgs, sortOrder); 
       while (emailCursor.moveToNext()) { 
        // Extract email address 
        emailFull = emailCursor.getString(
          emailCursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.ADDRESS)); 
       } 
       tvPhoneFull.post(new Runnable() { 
        @Override 
        public void run() { 
         tvEmailFull.setText(emailFull); 
        } 
       }); 
       emailCursor.close(); 
      } 
     }).start(); 
    } 
    public void initialize() { 
     tvContactName = (TextView)findViewById(R.id.tvContactName); 
     tvPhoneNum = (TextView)findViewById(R.id.tvPhoneNum); 
     tvPhoneType = (TextView)findViewById(R.id.tvPhoneType); 
     tvPhoneFull = (TextView)findViewById(R.id.tvPhoneFull); 
     tvEmailAdd = (TextView)findViewById(R.id.tvEmailAdd); 
     tvEmailType = (TextView)findViewById(R.id.tvEmailType); 
     tvEmailFull = (TextView)findViewById(R.id.tvEmailFull); 
     tvAddress = (TextView)findViewById(R.id.tvAddress); 
     tvAddType = (TextView)findViewById(R.id.tvAddType); 
     tvAddFull = (TextView)findViewById(R.id.tvAddFull); 
    } 
} 

로그 캣 : 그것은 사전

코드에 접촉 ID = 3. 감사에 대한 정보를 검색하려는 년대 로그 캣에 따르면

java.lang.IllegalArgumentException: Invalid column data1 
     at android.database.sqlite.SQLiteQueryBuilder.computeProjection(SQLiteQueryBuilder.java:632) 
     at android.database.sqlite.SQLiteQueryBuilder.buildQuery(SQLiteQueryBuilder.java:447) 
     at android.database.sqlite.SQLiteQueryBuilder.query(SQLiteQueryBuilder.java:387) 
     at com.android.providers.contacts.ContactsProvider2.query(ContactsProvider2.java:6043) 
     at com.android.providers.contacts.ContactsProvider2.queryLocal(ContactsProvider2.java:6019) 
     at com.android.providers.contacts.ContactsProvider2.query(ContactsProvider2.java:4787) 
     at android.content.ContentProvider$Transport.query(ContentProvider.java:189) 
     at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:113) 
     at android.os.Binder.execTransact(Binder.java:351) 
     at dalvik.system.NativeStart.run(Native Method) 
06-22 13:25:47.673 15139-15246/sat.tuts4mobile.customlistview E/AndroidRuntime: FATAL EXCEPTION: Thread-639 
     java.lang.IllegalArgumentException: Invalid column data1 
     at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:167) 
     at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:137) 
     at android.content.ContentProviderProxy.query(ContentProviderNative.java:366) 
     at android.content.ContentResolver.query(ContentResolver.java:372) 
     at android.content.ContentResolver.query(ContentResolver.java:315) 
     at sat.tuts4mobile.customlistview.ContactDetails$1.run(ContactDetails.java:51) 
     at java.lang.Thread.run(Thread.java:856) 
+0

logcat에 따르면'no such column : contact_id1' – CRUSADER

+0

일부 변경. 업데이트 된 코드 및 새 logcat 게시 – Psest328

답변

1

오류는 다음과 같습니다 no such column: contact_id1

이 줄에 =을 잊어 버렸기 때문입니다.

ContactsContract.Data.CONTACT_ID + contactId 

이는 contact_id = 1 대신에 contact_id1이됩니다. 그것은이어야한다 :

ContactsContract.Data.CONTACT_ID + " = " + contactId 
+0

감사합니다. 변경 후에 다른 오류가 나타납니다. 내 원래 게시물을 수정했습니다. 기회가있을 때 /보십시오. – Psest328

+0

도움이 되었기 때문에 기쁩니다.하지만 다른 문제가있는 경우 다른 질문을 올리십시오 (미안하지만 답을 모르겠습니다). – Dalmas

+0

발생합니다. 당신의 도움을 주셔서 감사합니다 – Psest328

관련 문제