그것은 너무 많은 스레드에 대한 언급은 페이스 북의 접촉은 어떤에 read.So 수있는 타사 응용 프로그램에만 시스템 응용 프로그램이나 활동에 의해 읽을 수없는이 안드로이드 전화 'DirectDial'과 'DirectMessage'는 홈 화면에서 길게 누르면 만들 수있는 페이스 북 연락처를 읽을 수 있습니다. 그래서 나는 안드로이드 소스 코드를 파고 들어 페이스 북 연락처를 읽을 수있는 곳을 찾는다.
내 결과.
'DirectDial', 'DirectMessage'및 ContactShortcut에 대한 바로 가기를 만들려면 연락처 정보 'name' 'number'및 'icon'이있는 결과로 인 텐트를 반환하는 ContactSelectionActivity가 시작됩니다. 여기에 무엇을 파헤 치는지 같은
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'또는를 시작 ContactSelectionActivity의 별칭을 만들 'DirectMessage'
그래서 여기
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