您好我试图创建一个可以打开.vcf文件的应用程序。主要来自短信应用程序,我已经让它工作,我可以使用以下代码和androidmanifest.xml打开我的应用程序
<activity android:name=".Home"
android:parentActivityName=".MapsActivity">
<meta-data android:name="android.support.PARENT_ACTIVITY"
android:value="MapsActivity" />
<intent-filter android:label="Open iLocation">
<action android:name="android.intent.action.VIEW" />
<action android:name="android.intent.action.EDIT" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="content" />
<data android:mimeType="text/x-vcard" />
</intent-filter>
<intent-filter android:label="Open iLocation">
<action android:name="android.intent.action.VIEW" />
<action android:name="android.intent.action.EDIT" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="file" />
<data android:mimeType="text/x-vcard" />
<data android:pathPattern=".*\.vcf" />
<data android:pathPattern=".*\..*\.vcf" />
<data android:pathPattern=".*\..*\..*\.vcf" />
<data android:pathPattern=".*\..*\..*\..*\.vcf" />
<data android:pathPattern=".*\..*\..*\..*\..*\.vcf" />
<data android:host="*" />
</intent-filter>
</activity>
这会打开我的.Home文件,但我不确定如何从文件中获取数据。非常感谢任何帮助。
答案 0 :(得分:1)
要获得代表您要查看或修改的内容的Uri
,请致电getIntent().getData()
。然后,您可以使用ContentResolver
和openInputStream()
获取InputStream
您要提供查看或修改的实际内容,并Uri
。
就vCard本身而言,就传统的Java API而言,Android没有内置的vCard解析功能。您的选择是:
找到另一个第三方库或其他vCard解析大量代码(例如,联系人应用程序应该在某处有一些)
根据需要滚动您自己的解析器
答案 1 :(得分:0)
<html>
<head>
<script type="text/javaScript" ><!--
function pressOk(){
opener.fnCallBack("From Pop");
window.close();
}
</script>
</head>
<body>
<input type="button" value="OK" onclick="pressOk();" />
</body>
</html>
得到意向结果.....
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT) {
mIntent.setAction(Intent.ACTION_GET_CONTENT);
mIntent.setType("text/x-vcard");
startActivityForResult(mIntent, 1);
} else {
mIntent.setAction(Intent.ACTION_OPEN_DOCUMENT);
mIntent.addCategory(Intent.CATEGORY_OPENABLE);
mIntent.setDataAndType(Uri.fromFile(contactFolder), "text/x-vcard");
startActivityForResult(Intent.createChooser(mIntent, "Select File"), 2);
}
答案 2 :(得分:0)
实际上这不是一个非常复杂的过程。只需确保您从FileProvider获得Uri
,就能触发电话簿选择器意图。
然后,您将可以使用.vcf
导入联系人。
private fun saveVcfFile(savedVCard: File) {
try {
val intent = Intent(Intent.ACTION_VIEW)
val uri = FileProvider.getUriForFile(
this,
"${BuildConfig.APPLICATION_ID}.fileprovider",
savedVCard
)
intent.setDataAndType(uri, contentResolver.getType(uri))
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
startActivity(intent)
} catch (exception: Exception) {
// TODO: Handle Exception
}
}