Общедоступный URI на Android, где я могу хранить VCARD, чтобы его можно было увидеть в операциях импорта Android vcard?(НЕТ SDCARD) - PullRequest
0 голосов
/ 29 марта 2012

Мне нужно импортировать 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, чтобы доступ к операции андроида, импортирующей видеокарты, имел к ней доступ??

Большое спасибо за чтение.

...