0

これまでのところ、私はここで見た例からこのコードを持っています:

public class testLayout extends Activity {
final int PICK_CONTACT = 0;
ImageView image = null;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    image=(ImageView)findViewById(R.id.icon);
    image.setOnClickListener(onChangePerson);
}

private View.OnClickListener onChangePerson=new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_PICK, People.CONTENT_URI);
startActivityForResult(intent, PICK_CONTACT);

}
};

@Override
 public void onActivityResult(int reqCode, int resultCode, Intent data) {
 super.onActivityResult(reqCode, resultCode, data);

switch (reqCode) {
 case (PICK_CONTACT) :
   if (resultCode == Activity.RESULT_OK) {
     Uri contactData = data.getData();
     Cursor c =  managedQuery(contactData, null, null, null, null);
     if (c.moveToFirst()) 
     {
       String name = c.getString(c.getColumnIndexOrThrow(People.NAME));

     }
   }
   break;
   }
   }
   }

これにより、電話の連絡先を正しく表示するアクティビティを開くことができ、連絡先を選択できるようになります。ただし、連絡先をクリックするたびに、プログラムがクラッシュします。なぜこれが起こっているのですか?ありがとう

4

1 に答える 1

0

わかりました。Hamy さん、以前はまったく知らなかった logcat を教えてくれてありがとう。

Androidマニフェストファイルにあった「READ_CONTACTSの許可が必要」を何度も見ていたことがわかりました。残念ながら、アプリケーション タグ内にそれがあったようで、理由がわからずにプログラムがクラッシュしていました。これを解決するのを手伝ってくれてありがとう!

于 2010-07-29T22:22:42.620 に答える