SDK1.5がメインの本で勉強していたら、Contacts.Peopleの使用で怒られちゃいました。
型 Contacts.People は使用すべきではありません
理由としては非推奨になってるからみたいですね。
解決方法は、その代替として用意されているContacsContract.Contactsの使用をすれば問題ないとのこと。
若干定数の名前とかが変更されているので、その点に注意して置き換えれば基本的に問題なく使えます。
参考に、変更前と変更後のソースのご紹介
Peopleを使った時
import android.app.ListActivity;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.Contacts.People;
import android.widget.ListAdapter;
import android.widget.SimpleCursorAdapter;
public class ContactListView extends ListActivity{
private ListAdapter adapter;
@Override
public void onCreate(Bundle icicle){
super.onCreate(icicle);
Cursor C = getContentResolver().query(People.CONTENT_URI, null, null, null, null);
startManagingCursor(C);
String[] columns = new String[] {People.NAME, People.NUMBER};
int[] names = new int[]{R.id.row_entry, R.id.number};
adapter = new SimpleCursorAdapter(this, R.layout.contactlist, C, columns, names):
setListAdapter(adapter);
}
}
ContactsContract.Contactsを使った時
import android.app.ListActivity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.view.View;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
public class ContactListView extends ListActivity {
private ListAdapter adapter;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
Cursor C = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null,
null, null);
startManagingCursor(C);
String[] columns = new String[] { ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER };
int[] names = new int[] { R.id.row_entry, R.id.number };
adapter = new SimpleCursorAdapter(this, R.layout.contactlist, C,
columns, names);
setListAdapter(adapter);
}
コメント