我创建了一个应用程序,向我展示了内容提供商的所有列“content:// contacts / people”。其中一个字段是times_contacted。所以,我做了一个应用程序来显示显示名称和times_contacted。我知道ContactContract。但我想知道,因为暂停的代码没有显示帐户详细信息。该应用程序在JellyBean模拟器上运行正常但在我的手机上运行在Ice Cream Sandwich上,应用程序显示空白活动,而在模拟器上显示联系人列表。另一件我想知道的是,在使用CursorLoader时我如何迭代查询结果,因为我无法获得任何游标引用。我应该分开使用ContentResolver吗? 这是我的应用程序的代码。我已经包含了READ_CONTACT权限。
package legacy_systems.contactsdisplay;
import android.net.Uri;
import android.os.Bundle;
import android.app.ListActivity;
import android.app.LoaderManager.LoaderCallbacks;
import android.content.CursorLoader;
import android.content.Loader;
import android.view.Menu;
import android.widget.SimpleCursorAdapter;
import android.widget.Toast;
import android.database.Cursor;
public class MainActivity extends ListActivity implements LoaderCallbacks<Cursor>{
SimpleCursorAdapter madapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
madapter = new SimpleCursorAdapter(this,
android.R.layout.simple_list_item_2,
null,
new String[]{"display_name","times_contacted" },
new int[]{android.R.id.text1, android.R.id.text2},0);
setListAdapter(madapter);
getLoaderManager().initLoader(0, null, this);
Toast.makeText(this, "Done", Toast.LENGTH_LONG).show();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
Uri baseUri = Uri.parse("content://contacts/people");
return new CursorLoader(this, baseUri,null,null,null,null);
// TODO Auto-generated method stub
}
@Override
public void onLoadFinished(Loader<Cursor> arg0, Cursor arg1) {
// TODO Auto-generated method stub
madapter.swapCursor(arg1);
}
@Override
public void onLoaderReset(Loader<Cursor> arg0) {
// TODO Auto-generated method stub
madapter.swapCursor(null);
}
}
答案 0 :(得分:0)
好吧,在迭代从查询联系人内容提供者获得的游标时,我了解到游标是空的。它没有任何行。所以,没有机会被展示。