我需要在没有SD卡但没有外部存储的手机上导入Android中的vcard。我可以访问vcard文件作为字符串/流(无论哪个)。我希望android通过调用以下内容来处理导入:
Intent i = new Intent();
i.setAction(android.content.Intent.ACTION_VIEW);
i.putExtra("account_name", accountName);
i.putExtra("account_type", accountType);
i.setDataAndType(Uri.parse("file://" + importFile.getAbsolutePath()), "text/x-vcard");
startActivity(i);
我收到权限错误,因为我找不到一个可以放置默认android活动可以具有读取权限的文件的地方。我尝试保存这样的文件:
FileOutputStream openFileOutput = ctx.openFileOutput("contacts.vcf", Context.MODE_WORLD_WRITEABLE);
try {
openFileOutput.write(fileAsString.getBytes());
openFileOutput.flush();
} catch (Exception e) {
e.printStackTrace();
} finally{
try{openFileOutput.close();}catch (Exception e) {}
}
然后使用:
将URI传递给它File fileStreamPath = ctx.getFileStreamPath("contacts.vcf");
Uri uri = Uri.parse("file://" + fileStreamPath.getAbsolutePath()), "text/x-vcard");
但我得到了许可错误。
我查看了活动,它唯一接受的是URI,它不接受流或字符串,所以我不能以这两种方式向它发送vcard文件,它必须是一个URI (这使这个问题变得非常复杂......)。
所以我的问题:
如何将我目前拥有的这个vcard作为字符串添加到公共URI中,以便导入vcards的android活动可以访问它?
非常感谢阅读。