Как сохранить файл.vcf в отдельной папке на внутренней SDCard
Я использую следующий код для хранения vcf
файл, который я генерирую из кода, который я могу генерировать vcf
файл, но он отображается в корневом каталоге на SD-карте. Я хочу сохранить его в отдельной папке. Как мне соответствовать требованиям? Пожалуйста, помогите Спасибо.
private void getVcardString() throws IOException {
final String vfile = "BackupCont" + currDate + ".vcf";
vCard = new ArrayList<String>();
cursor = getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null,
null, null);
Cursor c = dbhandle.getContactsByIsChecked();
ArrayList<String> arrchk=new ArrayList<String>();
for(int cc=0;cc<c.getCount();cc++)
{
arrchk.add(c.getString(c.getColumnIndex("con_name")));
}
if (cursor != null && cursor.getCount() > 0) {
int i;
String new_path= Environment.getExternalStorageDirectory().getAbsolutePath()+"/Folder_name";
// String path = "c:/";
File dir = new File(new_path);
if (!dir.exists())
dir.mkdirs();
String storage_path = Environment.getExternalStorageDirectory()+"/Folder_name"+vfile;
Toast.makeText(getApplicationContext(), storage_path,Toast.LENGTH_LONG).show();
FileOutputStream mFileOutputStream = new FileOutputStream(storage_path, false);
cursor.moveToFirst();
for (i = 0; i < cursor.getCount(); i++)
{
if(arrchk.contains(cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME))))
{
get(cursor);
cursor.moveToNext();
mFileOutputStream.write(vCard.get(i).toString().getBytes());
}
}
mFileOutputStream.close();
cursor.close();
Toast.makeText(getApplicationContext(), "Created...",Toast.LENGTH_LONG).show();
Uri uri=Uri.fromFile(new File(storage_path,""+vfile));
Intent sharingIntent = new Intent(Intent.ACTION_SEND);
sharingIntent.setType("application/x-vcard");
sharingIntent.putExtra(android.content.Intent.EXTRA_STREAM, uri);
startActivity(Intent.createChooser(sharingIntent, "Share using"));
}
else
{
Log.d("TAG", "No Contacts in Your Phone");
}
}
1 ответ
Решение
String outputDirectory = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "subFolderName";
outputDirectory.mkdirs();
File outputFile = new File(outputDirectory, filename);
FileOutputStream fos = new FileOutputStream(outputFile);
Вы также должны проверить Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)
чтобы убедиться, что внешнее хранилище действительно доступно.