私はアンドロイドを新しくしています。だから私はあなたが私に忍耐強くなるように頼みます。私は連絡先APIが開かれているボタンを押すと、アプリケーションを作成しようとしています。次に、ユーザーが連絡先を選択します。次に、 "onAcitvityResult(int reqcode、int rescode、Intent data)"で選択した連絡先を取得します。 Uriを手に入れずに、データベース全体を通してクエリを実行することなく、これを行う方法はありますか? これが第二の活動が開始私のコードです:アンドロイドメールアドレスの取得と保存と表示
public void onClick(View v) {
Log.d(TAG, "contact button clicked");
Toast.makeText(ctx, "Contact button clicked",
Toast.LENGTH_SHORT).show();
Intent contacts = new Intent(Intent.ACTION_GET_CONTENT,Contacts.CONTENT_URI);
contacts.setType(ContactsContract.Contacts.CONTENT_ITEM_TYPE);
startActivityForResult(contacts,1);
}
は、私が「Contacts.CONTENT_URI」と「Intent.ACTION_GET_CONTENT」を使用して修正するのですか?
私が使用しているのは正しいですか? 私はここにメールの詳細を含めるべきだと感じました。
私は活動の結果に対処するところである。 保護ボイドonActivityResult(INT requestCode、INT resultCodeが、インテントデータ){ super.onActivityResult(requestCode、resultCodeが、データ)。 文字列email = "";長いID。 場合(requestCodeは== 1){ (resultCodeが== Activity.RESULT_OK)であれば{
// get the contact ID
Uri contacturi= data.getData();
Cursor c= getContentResolver().query(contacturi,null,null,null,null);
id = c.getLong(c.getColumnIndex(ContactsContract.Contacts._ID));
c.close();
// get the data package containing the email address for the contact
c=getContentResolver().query(ContactsContract.Data.CONTENT_URI,
new String[]{Email.DATA1},
ContactsContract.Data.CONTACT_ID + "=? AND " + Email.MIMETYPE + "=?",
new String[]{String.valueOf(id), Email.CONTENT_ITEM_TYPE}, null);
email=c.getString(c.getColumnIndex(Email.DATA1));
Log.d(TAG, "email is" + email);
}
}
else {
Log.d(TAG, "requestCode is not 1");
}
EditText ctext= (EditText) findViewById(R.id.contacttxt);
ctext.append(email);
Log.d(TAG, "onActivityResult() ends");
}
私は "失敗が結果を提供する" という実行時例外を取得しています。 いくつかのsetResult()メソッドを含めるべきですか? ありがとうございます。
コード例は素晴らしいでしょう。 – Brahadeesh
私は放送受信機を使用する必要がありますか?何か違いはありますか?どんな洞察にも感謝します。 – Brahadeesh
私はデバッグを試みて問題を正確に突き止めました。これはこの行です: id = c.getDouble(c.getColumnIndexOrThrow(ContactsContract.Contacts._ID)); – Brahadeesh