這是提這麼多線程Facebook聯繫人無法通過第三方應用程序只有系統的應用程序或活動可以在任何read.So閱讀Android手機'DirectDial'和'DirectMessage'可以通過主屏幕上的長按創建,可以閱讀Facebook聯繫人。所以我深入瞭解Android源代碼以找到它在那裏閱讀Facebook聯繫人的方式。
我的發現。
要爲'DirectDial','DirectMessage'和ContactShortcut創建快捷方式,它將啓動ContactSelectionActivity,它將返回Intent作爲結果的聯繫人信息'name''number'和'icon'。如果有人在這裏研究什麼是的鏈接相同
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>
在這裏,他們創造ContactSelectionActivity的別名推出 'DirectDial' 或 'DirectMessage'
所以這裏是代碼勞克directdial或消息
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;
}
一旦選擇聯繫人
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