这是提这么多线程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