首页 \ 问答 \ android:麻烦用联系人填充listview(android : Trouble populating listview with contacts)

android:麻烦用联系人填充listview(android : Trouble populating listview with contacts)

我在google和stackoverflow上看了很多,最后写了一些代码,我认为应该按照预期将联系人放到listview中。 但我总是得到这个错误。 谁能帮我 ?

这是我的主要课程:

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

我真的很难把联系人放到列表视图中。 如果我的问题太混乱,有人可以告诉我如何从头开始这样做吗?


I've looked around a lot on google and stackoverflow and finally wrote some code which I think should get the contacts into the listview as expected. But I always get this error. Can anyone help me ?

This is my Main class :

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;
}

}

And this is what my logCat displays:

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

I'm really having a tough time trying to get the contacts into the listview. If my question is too confusing, can anyone just show me how to go about doing this from scratch?


原文:https://stackoverflow.com/questions/20877957
更新时间:2023-12-01 07:12

最满意答案

我找到了解决方案OAuth2Util.getAuthzRequestContext()。getValidityPeriod()结果以毫秒为单位。


I found the soloution OAuth2Util.getAuthzRequestContext().getValidityPeriod() The result is in milliseconds.

相关问答

更多

相关文章

更多

最新问答

更多
  • 您如何使用git diff文件,并将其应用于同一存储库的副本的本地分支?(How do you take a git diff file, and apply it to a local branch that is a copy of the same repository?)
  • 将长浮点值剪切为2个小数点并复制到字符数组(Cut Long Float Value to 2 decimal points and copy to Character Array)
  • OctoberCMS侧边栏不呈现(OctoberCMS Sidebar not rendering)
  • 页面加载后对象是否有资格进行垃圾回收?(Are objects eligible for garbage collection after the page loads?)
  • codeigniter中的语言不能按预期工作(language in codeigniter doesn' t work as expected)
  • 在计算机拍照在哪里进入
  • 使用cin.get()从c ++中的输入流中丢弃不需要的字符(Using cin.get() to discard unwanted characters from the input stream in c++)
  • No for循环将在for循环中运行。(No for loop will run inside for loop. Testing for primes)
  • 单页应用程序:页面重新加载(Single Page Application: page reload)
  • 在循环中选择具有相似模式的列名称(Selecting Column Name With Similar Pattern in a Loop)
  • System.StackOverflow错误(System.StackOverflow error)
  • KnockoutJS未在嵌套模板上应用beforeRemove和afterAdd(KnockoutJS not applying beforeRemove and afterAdd on nested templates)
  • 散列包括方法和/或嵌套属性(Hash include methods and/or nested attributes)
  • android - 如何避免使用Samsung RFS文件系统延迟/冻结?(android - how to avoid lag/freezes with Samsung RFS filesystem?)
  • TensorFlow:基于索引列表创建新张量(TensorFlow: Create a new tensor based on list of indices)
  • 企业安全培训的各项内容
  • 错误:RPC失败;(error: RPC failed; curl transfer closed with outstanding read data remaining)
  • C#类名中允许哪些字符?(What characters are allowed in C# class name?)
  • NumPy:将int64值存储在np.array中并使用dtype float64并将其转换回整数是否安全?(NumPy: Is it safe to store an int64 value in an np.array with dtype float64 and later convert it back to integer?)
  • 注销后如何隐藏导航portlet?(How to hide navigation portlet after logout?)
  • 将多个行和可变行移动到列(moving multiple and variable rows to columns)
  • 提交表单时忽略基础href,而不使用Javascript(ignore base href when submitting form, without using Javascript)
  • 对setOnInfoWindowClickListener的意图(Intent on setOnInfoWindowClickListener)
  • Angular $资源不会改变方法(Angular $resource doesn't change method)
  • 在Angular 5中不是一个函数(is not a function in Angular 5)
  • 如何配置Composite C1以将.m和桌面作为同一站点提供服务(How to configure Composite C1 to serve .m and desktop as the same site)
  • 不适用:悬停在悬停时:在元素之前[复制](Don't apply :hover when hovering on :before element [duplicate])
  • 常见的python rpc和cli接口(Common python rpc and cli interface)
  • Mysql DB单个字段匹配多个其他字段(Mysql DB single field matching to multiple other fields)
  • 产品页面上的Magento Up出售对齐问题(Magento Up sell alignment issue on the products page)