2014-01-02 7 views
0

Я много огляделся по google и stackoverflow и, наконец, написал код, который, как я думаю, должен получить контакты в списке, как и ожидалось. Но я всегда получаю эту ошибку. Может кто-нибудь мне помочь ?android: проблема с заполнением списка с контактами

Это мой Основной класс:

package com.shoaiblalich.pinchme; 

import java.util.ArrayList; 

import android.net.Uri; 
import android.os.Bundle; 
import android.provider.ContactsContract; 
import android.provider.ContactsContract.RawContacts; 
import android.app.Activity; 
import android.database.Cursor; 
import android.view.Menu; 
import android.widget.ListView; 
import android.widget.SimpleCursorAdapter; 

public class Main extends Activity { 



@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    populateContactList(); 
} 




private void populateContactList() { 
    // TODO Auto-generated method stub 
    Cursor cur = getContacts(); 
    String[] fields = new String[] {ContactsContract.Data.DISPLAY_NAME}; 
    SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,android.R.layout.simple_list_item_1,cur,fields,new int[] {android.R.id.text1});; 
    ListView lv = (ListView) findViewById(R.id.listView1); 
    lv.setAdapter(adapter); 

} 




@SuppressWarnings("deprecation") 
private Cursor getContacts() { 
    // TODO Auto-generated method stub 
    Uri uri = ContactsContract.Contacts.CONTENT_URI; 
    String [] projection = new String[] { 
      ContactsContract.Contacts._ID, 
      ContactsContract.Contacts.DISPLAY_NAME }; 
    String selection = null; 
    String[] selectionArgs = null; 
    String sortOrder = ContactsContract.Contacts.DISPLAY_NAME + "COLLATE LOCALIZED ASC"; 
    return managedQuery(uri,projection,selection,selectionArgs,sortOrder); 

} 


@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

} 

И это то, что мои LogCat дисплеи:

01-02 12:28:44.037: E/AndroidRuntime(8074): FATAL EXCEPTION: main 
01-02 12:28:44.037: E/AndroidRuntime(8074): java.lang.RuntimeException: Unable to start  activity ComponentInfo{com.shoaiblalich.pinchme/com.shoaiblalich.pinchme.Main}: android.database.sqlite.SQLiteException: near "LOCALIZED": syntax error (code 1): , while compiling: SELECT _id, display_name FROM view_contacts_restricted WHERE ((1)) ORDER BY display_nameCOLLATE LOCALIZED ASC 
01-02 12:28:44.037: E/AndroidRuntime(8074):  at  android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2304) 
01-02 12:28:44.037: E/AndroidRuntime(8074):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2358) 
01-02 12:28:44.037: E/AndroidRuntime(8074):  at android.app.ActivityThread.access$700(ActivityThread.java:165) 
01-02 12:28:44.037: E/AndroidRuntime(8074):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1326) 
01-02 12:28:44.037: E/AndroidRuntime(8074):  at android.os.Handler.dispatchMessage(Handler.java:99) 
01-02 12:28:44.037: E/AndroidRuntime(8074):  at android.os.Looper.loop(Looper.java:137) 
01-02 12:28:44.037: E/AndroidRuntime(8074):  at android.app.ActivityThread.main(ActivityThread.java:5450) 
01-02 12:28:44.037: E/AndroidRuntime(8074):  at java.lang.reflect.Method.invokeNative(Native Method) 
01-02 12:28:44.037: E/AndroidRuntime(8074):  at java.lang.reflect.Method.invoke(Method.java:525) 
01-02 12:28:44.037: E/AndroidRuntime(8074):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187) 
01-02 12:28:44.037: E/AndroidRuntime(8074):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003) 
01-02 12:28:44.037: E/AndroidRuntime(8074):  at dalvik.system.NativeStart.main(Native Method) 
01-02 12:28:44.037: E/AndroidRuntime(8074): Caused by: android.database.sqlite.SQLiteException: near "LOCALIZED": syntax error (code 1): , while compiling: SELECT _id, display_name FROM view_contacts_restricted WHERE ((1)) ORDER BY display_nameCOLLATE LOCALIZED ASC 
01-02 12:28:44.037: E/AndroidRuntime(8074):  at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:181) 
01-02 12:28:44.037: E/AndroidRuntime(8074):  at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:137) 
01-02 12:28:44.037: E/AndroidRuntime(8074):  at android.content.ContentProviderProxy.query(ContentProviderNative.java:385) 
01-02 12:28:44.037: E/AndroidRuntime(8074):  at android.content.ContentResolver.query(ContentResolver.java:417) 
01-02 12:28:44.037: E/AndroidRuntime(8074):  at android.content.ContentResolver.query(ContentResolver.java:360) 
01-02 12:28:44.037: E/AndroidRuntime(8074):  at android.app.Activity.managedQuery(Activity.java:1826) 
01-02 12:28:44.037: E/AndroidRuntime(8074):  at com.shoaiblalich.pinchme.Main.getContacts(Main.java:51) 
01-02 12:28:44.037: E/AndroidRuntime(8074):  at com.shoaiblalich.pinchme.Main.populateContactList(Main.java:30) 
01-02 12:28:44.037: E/AndroidRuntime(8074):  at com.shoaiblalich.pinchme.Main.onCreate(Main.java:22) 
01-02 12:28:44.037: E/AndroidRuntime(8074):  at android.app.Activity.performCreate(Activity.java:5369) 
01-02 12:28:44.037: E/AndroidRuntime(8074):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1104) 
01-02 12:28:44.037: E/AndroidRuntime(8074):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2267) 
01-02 12:28:44.037: E/AndroidRuntime(8074):  ... 11 more 
01-02 12:28:45.547: I/Process(8074): Sending signal. PID: 8074 SIG: 9 

Я действительно жесткое время, пытаясь получить контакты в ListView. Если мой вопрос слишком запутан, может ли кто-нибудь показать мне, как это делать с нуля?

ответ

0

Как ошибка очень ясно, его ошибка синтаксиса, пространство отсутствует после display_name в ORDER BY display_nameCOLLATE LOCALIZED ASC

заменить ниже

String sortOrder = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC"; 
Смежные вопросы