2

こんにちは、連絡先を取得stackoverflowできるアプリケーションを開発しようとしていますが、問題ありません。連絡先をフォーマットファイルとしてバックアップするために以下のアプローチを使用していますbackuprestorebackupVCF

public static void getVCF() {
    final String vfile = "contacts.vcf";

    Cursor phones = mContext.getContentResolver().query(
            ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null,
            null, ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC");
    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();
        }
    }
}

しかしrestore、謎です。インターネットでたくさん検索しましたが、成功しませんでした。backup使用しようとしましIntentたが、それは問題の解決策ではありません。コードは次のとおりです

            final Intent intent = new Intent();

            final MimeTypeMap mime = MimeTypeMap.getSingleton();
            String tmptype = mime.getMimeTypeFromExtension("vcf");
            final File file = new File(Environment.getExternalStorageDirectory().toString() +"/contacts.vcf");

            intent.setDataAndType(Uri.fromFile(file),tmptype);
            startActivity(intent);

Permissions

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

restoreを使わずに連絡先をきちんとしたいIntentsコードを使用してVCFファイルから連絡先をインポートする方法に関する有益なこれらの投稿に出くわしましたが 、コードの使用方法が混乱してしまいました。誰かこのパズルを解決するのを手伝ってくれませんか.

ありがとう。

4

0 に答える 0