如何调用系统应用程序获取联系人详细信息

How to call the system app for contacts' detail

我知道下面的代码可以调用系统activity获取联系人列表。

public void showSystemContactsUI(int requestCode) {
    Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
    startActivityForResult(intent, requestCode);
}   

我的问题是如何调用系统UI获取联系人的详细信息,如附件截图,谢谢。

您可以使用以下代码片段。在显示其详细信息之前,您需要找到目标联系人 ID。

Uri uri = ContactsContract.Contacts.CONTENT_URI;
uri = Uri.withAppendedPath(uri, "1"); // 1 is contact id
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);

创建 class 调用它 IntentHelper 并将所有相关功能放入您的系统(例如 Dial-NumberSend-SMS , View-in-Browser , ... ) 像这样:

public class IntentHelper {


    public static void dialNumber(Context context, String number) {
        if (((TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE)).getPhoneType() != TelephonyManager.PHONE_TYPE_NONE) {
            Intent intent = new Intent(Intent.ACTION_DIAL, Uri.fromParts("tel", number, null));
            context.startActivity(intent);
        }
    }

    public static void sendEmail(Context context, String email) {
        Intent emailIntent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("mailto", email, null));
        context.startActivity(Intent.createChooser(emailIntent, "Send email..."));
    }


    public static void viewInBrowser(Context context, String url) {
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
        if (null != intent.resolveActivity(context.getPackageManager())) {
            context.startActivity(intent);
        }
    }

    public static void shareOnSocials(Context context, String videoUrl) {
        Intent intent = new Intent(Intent.ACTION_SEND);
        intent.setType("text/plain");
        intent.putExtra(Intent.EXTRA_TEXT, videoUrl);
        context.startActivity(Intent.createChooser(intent, "share on "));
    }

}