2

連絡先と SMS アプリの間のレイヤーとして機能するアプリを作成しようとしています。vcard経由で連絡先を共有するときに、アプリに追加のオプションを取得できるようにします。私のアプリケーションはインテントを問題なく受け取ります。content:// uri を取得します

Uri uri = (Uri) getIntent().getExtras().get(Intent.EXTRA_STREAM);

そして、AssetFileDescriptor を次のように取得できます。

AssetFileDescriptor afd = getContentResolver().openAssetFileDescriptor(uri, "r");

問題なし。同様にファイルを開く:

InputStream is = afd.createInputStream();
byte[] buffer = new byte[(int)afd.getDeclaredLength()];
is.read(buffer);

ただし、このファイルには「[」と 16 進文字列のみが含まれています。実際の vcard ファイルを考慮する必要があると思いますか? 私がしたので

buffer.toString();

それ以外の

new String(buffer);

これはutf-8でエンコードされたバイトを正しく変換しません、愚かな愚かな8時間の間違い....

query() で uri を開こうとしています

Cursor c = getContentResolver().query(uri, null, null, null, null);

1行を含むカーソルが表示されます???, firstname lastname.vcf, null

どこ ???は 3 桁の数字です。

たぶん、他の誰かがこれを読むために使用しています。

4

0 に答える 0