十三、AOSP-通讯录导入

.

  • 一、vcf文件制作
  • 二、adb导入方法
  • 三、删除导入的提示

一、vcf文件制作

BEGIN:VCARD
VERSION:2.1
N:cc;ff;;;
FN:ff cc
TEL;CELL:1-375-667-8808
END:VCARD

二、adb导入方法

  • 将制作好的vcf文件“contacts.vcf”保存到sd的Music目录下
  • 运行如下adb命令
adb shell am start --user 0 -t "text/x-vcard" -d "file:///storage/emulated/0/Music/contacts.vcf" -a android.intent.action.VIEW com.android.contacts

三、删除导入的提示

  • 调用adb命令后,我们发现会弹出一个确认框,点击确认后才会开始导入
  • 确认框提示“Import contacts from vCard?”
  • 这时候我们到源码路径“packages/apps/Contacts/res/values/strings.xml”下找到这个提示
    
    <string name="import_from_vcf_file_confirmation_message">Import contacts from vCard?string>
  • 然后到“packages/apps/Contacts/src”下搜索“import”,我们发现“ImportVCardDialogFragment.java”中调用了“import_from_vcf_file_confirmation_message”十三、AOSP-通讯录导入_第1张图片
    十三、AOSP-通讯录导入_第2张图片
  • 接下来,我们到“packages/apps/Contacts/src/com/android/contacts/vcard/ImportVCardActivity.java“中,发现了这个导入窗的弹出调用
    • 我们可以看到isCallerSelf是判断是否是系统自己的package调用
    • 这时候我们就找到了不需要确认框就能直接导入的方法了
        if (isCallerSelf(this)) {
            startImport(sourceUri, sourceDisplayName);
        } else {
            ImportVCardDialogFragment.show(this, sourceUri, sourceDisplayName);
        }
  • 修改源码:else中也直接开始导入即可
        if (isCallerSelf(this)) {
            startImport(sourceUri, sourceDisplayName);
        } else {
            //zjp update
            startImport(sourceUri, sourceDisplayName);
            //ImportVCardDialogFragment.show(this, sourceUri, sourceDisplayName);
        }

你可能感兴趣的:(AOSP-android,8.x源码定制,android,架构)