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
- React Native 橋接原生 iOS 以及 Android 獲取 APP 版本號React Native橋接iOSAndroidAPP
- android開啟系統聯絡人介面Android
- android 獲取手機號碼Android
- 第四講 smart qq 獲取聯絡人資訊 ,分組 好友 群聊
- 【VMware VCF】更新 VCF 5.1 至 VCF 5.2 版本。
- 獲取app版本號相關資訊APP
- 關於模型關聯 獲取不到關聯資訊 求教模型
- request 獲取不到 CookieCookie
- C# 獲取系統當前IE版本號C#
- 如何獲取服務的 git 分支及 commit 版本號GitMIT
- iOS (實現檢查更新功能時)獲取App最新版本號iOSAPP
- 怎麼修改公司網站聯絡人,更新網站上的聯絡人資訊網站
- CRM系統中的聯絡人是什麼?如何進行聯絡人管理?
- 網站聯絡人更改操作網站
- win10 如何匯入人脈聯絡人_win10人脈怎麼匯入聯絡人Win10
- iPhone緊急聯絡人設定教程 iPhone怎麼設定緊急聯絡人?iPhone
- CRM系統中聯絡人管理的十大好處
- 怎麼能接聽來電?獲取不到不到元素
- 如何獲取微信的版本號詳解【附完整原始碼】原始碼
- 蘋果iphone XS匯入聯絡人的方法 iphone XS怎麼批次匯入聯絡人?蘋果iPhone
- 小米手機設定緊急聯絡人方法 小米能設定緊急聯絡人嗎?
- uniapp打包apk安裝,應用版本號衝突,根據已有apk檔案獲取應用版本號APPAPK
- python獲取頁面亂碼時的處理Python
- Android12以上獲取裝置網路訊號資料Android
- HarmonyOS-基礎之聯絡人案例
- 語音訊號處理獲取 NFFT 的自定義函式音訊FFT函式
- OPPO手機緊急聯絡人設定使用教程 OPPO手機怎麼設定緊急聯絡人
- ADB命令獲取Android UIDAndroidUI
- Android8,reactnative中webView傳的token,vue中獲取不到是怎麼回事?AndroidReactWebViewVue
- 聯絡人管理工具:Cisdem ContactsMate for MacMac
- 自動增加 Android App 的版本號AndroidAPP
- 獲取絕對路徑 【檔案找不到】
- 為什麼獲取不到@Value註解值?
- 為啥從SurfaceView中獲取不到圖片?View
- 巧用PHP函式或常量快速獲取PHP版本號、最大檔名長度PHP函式
- 通過身份證號碼獲取人的年齡和性別
- 登陸了系統,但有些時候獲取不到使用者名稱