как записать данные на SD-карту - PullRequest
0 голосов
/ 01 ноября 2010

мое приложение - это список контактов, и я хочу сохранить свои контактные данные на SD-карте но как я могу хранить данные на SD-карте, или если я буду использовать базу данных, то как я хочу сохранить ее или использовать простой файл, чем как я хочу сохранить ее

спасибо заранее

Ответы [ 3 ]

1 голос
/ 01 ноября 2010

Вы можете получить путь, используя Environment.getExternalStorageDirectory(), а затем открыть файл, используя этот путь.

Возможно, вам потребуется следующее разрешение:

uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
1 голос
/ 01 ноября 2010

Если вы действительно хотите сохранить простой файл на SD-карте, вы можете сделать это так:

File sdCard = Environment.getExternalStorageDirectory(); // get a handle to the SD card
File myFile = new File(sdCard, "test"); // get a file handle so a single file

Теперь вы можете использовать BufferedWriter, например, или любой другой метод Javaзаписи в этот новый файл.

Ваше приложение должно иметь разрешение на запись на SD-карту, разумеется, добавив WRITE_EXTERNAL_STORAGE.

По договоренности, все данные вашего приложения должны бытьхранится в следующем каталоге на SD-карте: Android/data/your.package.name/files/

Также обратите внимание, что вы должны явно проверить, существует ли SD-карта на самом деле или ее можно записать, и так далее.См. здесь для документации.

0 голосов
/ 20 августа 2012

Сохраните контактные данные в SD-карту устройства, используя следующий код.

VCardActivity.java: -

public class VCardActivity extends Activity {
      Cursor cursor;
      ArrayList<String> vCard;
      String vfile;
      static Context mContext;

      /** Called when the activity is first created. */
      @Override
      public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            mContext = VCardActivity.this;
            getVCF();
      }

      public static void getVCF() {
            final String vfile = "Contacts.vcf";
            Cursor phones = mContext.getContentResolver().query(
            ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
                                  null, null, null);
            phones.moveToFirst();
            for (int i = 0; i < phones.getCount(); i++) {
                   String lookupKey = phones.getString(phones
                           .getColumnIndex(ContactsContract.Contacts.LOOKUP_KEY));
                   Uri uri = Uri.withAppendedPath(
                   ContactsContract.Contacts.CONTENT_VCARD_URI,
                                                 lookupKey);
                   AssetFileDescriptor fd;
                   try {
                           fd = mContext.getContentResolver().openAssetFileDescriptor(uri, "r");
                           FileInputStream fis = fd.createInputStream();
                           byte[] buf = new byte[(int) fd.getDeclaredLength()];
                           fis.read(buf);
                           String VCard = new String(buf);
                           String path = Environment.getExternalStorageDirectory()
                                    .toString() + File.separator + vfile;
                           FileOutputStream mFileOutputStream = new FileOutputStream(path,
                                     true);
                           mFileOutputStream.write(VCard.toString().getBytes());
                           phones.moveToNext();
                           Log.d("Vcard", VCard);
                   } catch (Exception e1) {
                           // TODO Auto-generated catch block
                           e1.printStackTrace();
                   }
            }
      }
}

и дополнительную информацию см. По ссылке ниже.

Экспортируйте контакты в виде файла VCF

и дайте ниже разрешение в свой файл androidmanifest.xml.

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
...