私は QuickContactBadge に取り組んでいます。私がやりたいのは、FacebookやGmailのようにQuickContactBadgeにアプリのアイコンを表示することです。ユーザーがアイコンを押すと、選択したアクティビティでアプリケーションが起動します。そして、アクティビティが開始されると、ユーザーが選択した電話番号を取得したいと考えています。
現在、私のアプリケーションは QuickContactBadge を表示しており、バッジもアプリケーションのメイン アクティビティを起動しますが、ユーザーがアプリケーションを起動する電話番号フォームを取得できません。
私のコードは次のとおりです。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(getIntent().getData() != null) {
Cursor cursor = getContentResolver().query(getIntent().getData(), null, null, null, null);
if(cursor != null) {
while (cursor.moveToNext()) {
String contactId = cursor.getString(cursor.getColumnIndex(
ContactsContract.Contacts._ID));
String hasPhone = cursor.getString(cursor.getColumnIndex(
ContactsContract.Contacts.HAS_PHONE_NUMBER));
if (Integer.parseInt(hasPhone) == 1) {
// You know have the number so now query it like this
Cursor phones = getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?" ,
new String[]{contactId}, null);
while (phones.moveToNext()) {
String phoneNumber = phones.getString(
phones.getColumnIndex(
ContactsContract.CommonDataKinds.Phone.NUMBER));
}
phones.close();
} else{
Toast.makeText(this, "Invalid Contact", Toast.LENGTH_SHORT).show();
}
}
}
}
setContentView(R.layout.main);
}
Intent.getData を取得しますが、列が存在しないため hasPhone 番号で例外が発生し、電話番号を取得できないときにこの例外を無視するとコードがダウンします。私が間違っているところを助けてください。
このコードを使用して、自分のアプリを QuickContactBadge に表示しました
<activity
android:name=".SandBoxProjectActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="vnd.android.cursor.item/name" />
</intent-filter>
</activity>