Android在到處.vcf聯絡人時,vCard獲取不到版本號
在嘗試匯出.vcf聯絡人時,發現目前Android沒有提供獲取當前手機支援的vcard版本號。
目前的Android版本(10及之前)中看到的預設方式的版本都是2.1。
對比原生Contacts(com.android.contacts)中的處理方案:
ExportVCardActivity.java
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
...
final Uri targetFileName = data.getData();
final ExportRequest request = new ExportRequest(targetFileName);
mService.handleExportRequest(request, new NotificationImportExportListener(
ExportVCardActivity.this));
...
}
該方法中負責建立ExportRequest物件。其中,mService是VCardService.java。
ExportRequest.java
public ExportRequest(Uri destUri) {
this(destUri, null);
}
public ExportRequest(Uri destUri, String exportType) {
this.destUri = destUri;
this.exportType = exportType;
}
由此可見,ExportVCardActivity中在建立ExportRequest物件時,只傳入了Uri,並沒有傳入exportType,因此exportType將是null,而vCard的版本號正式由exportType轉換後得到的。不同的手機廠商在適配自己的Contacts時可能會修改上面的這行程式碼:
final ExportRequest request = new ExportRequest(targetFileName);
||
||
final ExportRequest request = new ExportRequest(targetFileName, exportType);
使其傳入exportType。
VCardService.java
public synchronized void handleExportRequest(ExportRequest request,
VCardImportExportListener listener) {
if (tryExecute(new ExportProcessor(this, request, mCurrentJobId, mCallingActivity))) {
...
} else {
...
}
}
handleExportRequest()中建立ExportProcessor物件。
ExportProcessor.java
private void runInternal() {
...
VCardComposer composer = null;
final String exportType = request.exportType;
final int vcardType;
if (TextUtils.isEmpty(exportType)) {
vcardType = VCardConfig.getVCardTypeFromString(
mService.getString(R.string.config_export_vcard_type));
} else {
vcardType = VCardConfig.getVCardTypeFromString(exportType);
}
composer = new VCardComposer(mService, vcardType, true);
...
}
上面看到在建立ExportRequest物件時沒有傳入exportType,因此,該方法中將根據R.string.config_export_vcard_type資源獲取vcardType,這個config_export_vcard_type是屬於Contacts應用,所以,不同的手機廠商很可能根據Android的版本或者自己的產品要求,適配vCard的版本。
因此,目前獲取不到手機系統支援的vCard版本號,,在匯出.vcf聯絡人時,只能採用預設方式。
若哪位碼友有獲取vCard版本號的方式(不包括從.vcf檔案中獲取),勞煩賜教。
參考:https://blog.csdn.net/michael_yt/article/details/78270537
------記錄工作中的點點滴滴,書寫碼農的平凡歲月!------
相關文章
- Android獲取聯絡人和電話號碼Android
- android 從SIM卡獲取聯絡人資訊Android
- iOS獲取通訊錄聯絡人資訊iOS
- android ContentResolver的使用(獲取和修改聯絡人資訊demo)Android
- 使用curl獲取google聯絡人列表 (向zend的Gdata say no)Go
- Android獲取手機聯絡人匹配使用者表並按字母A Z排序展示Android排序
- 影片直播系統原始碼,Android 讀取聯絡人列表原始碼Android
- 【VMware VCF】更新 VCF 5.1 至 VCF 5.2 版本。
- 關於模型關聯 獲取不到關聯資訊 求教模型
- iTunes構建版本 獲取不到應用程式
- 獲取app版本號相關資訊APP
- 間接獲取flash主版本號
- 跨程式共享資料,讀取聯絡人資訊
- Android2.0 如何設定和讀取聯絡人的分組(Group)Android
- Android程式設計獲取手機型號,本機電話號碼,sdk版本及firmware版本號(即系統版本號)Android程式設計
- React Native 橋接原生 iOS 以及 Android 獲取 APP 版本號React Native橋接iOSAndroidAPP
- android 獲取手機號碼Android
- iOSContactsUI(聯絡人)iOSUI
- Android KK臺,聯絡人列表#集團放置A~Z之前Android
- request 獲取不到 CookieCookie
- CRM系統中的聯絡人是什麼?如何進行聯絡人管理?
- 網站聯絡人更改操作網站
- win10 如何匯入人脈聯絡人_win10人脈怎麼匯入聯絡人Win10
- 準確獲取低版本IE瀏覽器的版本號瀏覽器
- C# 獲取系統當前IE版本號C#
- 獲取WebLogic版本號有以下幾種方式Web
- iPhone緊急聯絡人設定教程 iPhone怎麼設定緊急聯絡人?iPhone
- KindEditor:Ajax提交表單時獲取不到HTML內容HTML
- 蘋果iphone XS匯入聯絡人的方法 iphone XS怎麼批次匯入聯絡人?蘋果iPhone
- iOS (實現檢查更新功能時)獲取App最新版本號iOSAPP
- 小米手機設定緊急聯絡人方法 小米能設定緊急聯絡人嗎?
- 如何獲取服務的 git 分支及 commit 版本號GitMIT
- 如何獲取微信的版本號詳解【附完整原始碼】原始碼
- HarmonyOS-基礎之聯絡人案例
- Android訪問和載入本地聯絡人的程式碼實現Android
- 怎麼能接聽來電?獲取不到不到元素
- node js 安裝express 查不到版本號JSExpress
- 獲取資訊版本1