我的应用程序是联系人列表,我想将我的联系人数据存储在 sd 卡中,但我如何将数据存储在 sd 卡中,或者如果我将使用数据库,那么我想如何存储它或使用简单文件而不是我想如何存储它
提前谢谢
我的应用程序是联系人列表,我想将我的联系人数据存储在 sd 卡中,但我如何将数据存储在 sd 卡中,或者如果我将使用数据库,那么我想如何存储它或使用简单文件而不是我想如何存储它
提前谢谢
如果你真的想将一个简单的文件存储到 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 卡是否实际存在或是否可写,等等。有关文档,请参见此处。
您可以使用获取路径Environment.getExternalStorageDirectory()
,然后使用该路径打开文件。
您可能必须具有以下权限集:
uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
使用以下代码将联系人数据存储到设备 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();
}
}
}
}
并查看下面的链接了解更多信息。
并在您的 androidmanifest.xml 文件中授予以下权限。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />