Мне нужно импортировать vcard в Android на телефон без SD-карты и внешнего хранилища.У меня есть доступ к файлу 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 (что усложняет этопроблема очень ...).
Итак, мой вопрос:
Как я могу получить эту открытку, которая у меня в данный момент есть в виде строки, в общедоступный URI, чтобы доступ к операции андроида, импортирующей видеокарты, имел к ней доступ??
Большое спасибо за чтение.