それはとても多くのスレッドのFacebookの連絡先に言及しているだけで、システムのアプリケーションやアクティビティが任意の上read.Soできるサードパーティ製のアプリケーションで読み取ることができませんアンドロイド携帯電話「DirectDial」と「DirectMessage」は、ホーム画面で長押しして作成できるもので、Facebookの連絡先を読むことができます。そこで私はAndroidのソースコードを掘り下げて、Facebookの連絡先を読むためにそこにあるものを見つけます。
私の知見。
'DirectDial'、 'DirectMessage'、およびContactShortcutのショートカットを作成するにはContactSelectionActivityが起動し、連絡先情報 'name' 'number'と 'icon'を持つ結果としてIntentを返します。ここで何をすべきか同じ
https://github.com/android/platform_packages_apps_contacts/blob/master/src/com/android/contacts/activities/ContactSelectionActivity.java
ためのリンクですだから私はAndroidManifestに見て、あなたのコード 内から「DirectDial」または「DirectMessage」を起動する方法について説明します。XML
https://github.com/android/platform_packages_apps_contacts/blob/master/AndroidManifest.xml
<activity-alias android:name="alias.DialShortcut"
android:targetActivity=".activities.ContactSelectionActivity"
android:label="@string/shortcutDialContact"
android:icon="@mipmap/ic_launcher_shortcut_directdial"
android:enabled="@*android:bool/config_voice_capable">
<intent-filter>
<action android:name="android.intent.action.CREATE_SHORTCUT" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.CAR_MODE" />
</intent-filter>
</activity-alias>
<activity-alias android:name="alias.MessageShortcut"
android:targetActivity=".activities.ContactSelectionActivity"
android:label="@string/shortcutMessageContact"
android:icon="@mipmap/ic_launcher_shortcut_directmessage"
android:enabled="@*android:bool/config_voice_capable">
<intent-filter>
<action android:name="android.intent.action.CREATE_SHORTCUT" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity-alias>
は、ここで彼らはので、ここで 'DirectDial' または 'DirectMessage'
を起動するためにContactSelectionActivityのエイリアスを作成したら
private boolean launchContactSelector() {
ComponentName distantActivity;
if (Constants.PHONE_CALL) //check what you want to call
distantActivity = new ComponentName("com.android.contacts", "alias.DialShortcut");
else {
distantActivity = new ComponentName("com.android.contacts", "alias.MessageShortcut");
}
Intent intent = new Intent();
intent.setComponent(distantActivity);
intent.setAction(Intent.ACTION_PICK);
intent.setAction(Intent.ACTION_CREATE_SHORTCUT);
startActivityForResult(intent, selector);
return true;
}
directdialやメッセージを出せするためのコードです連絡先が選択されました
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode != Activity.RESULT_OK) return;
Intent intent = new Intent();
intent = ((Intent) data.getParcelableExtra(Intent.EXTRA_SHORTCUT_INTENT));
switch (requestCode) {
case Constants.PHONE_CALL: {
intent.setAction(Intent.ACTION_CALL);
break;
}
case Constants.MESSAGE: {
intent.setAction(Intent.ACTION_SENDTO);
break;
}
}
String number = intent.getData().toString(); //It will have the phone number
String name = data.getStringExtra(Intent.EXTRA_SHORTCUT_NAME); //Contact name
ImageView image = new ImageView() //Contact image
image.setImageBitmap((Bitmap) data.getParcelableExtra(Intent.EXTRA_SHORTCUT_ICON));
// Must need to set the Intent.ACTION_SENDTO or Intent.ACTION_CALL because default permission sent is CALL_PRIVILEGED which is for system Activty you .
startActivity(data);
}
アプリ内でFacebookの連絡先を読むことができるようになりました。
オープンソースのアプリケーションのリンクが完成したら、実際にこれを使用しています。
rawContactIdとは何かそれを取得する場所 – zaiff
最初はプロバイダからの連絡先を取得しているということを考えれば、これはまったく役に立ちません。この答えはあなたをどこにも連れてこない... – takecare