1

これがコードの抜粋です(問題を示すためだけに最小化しようとしました。これが、Uri がハードコードされている理由です。実際のコードは、ユーザーが連絡先で「共有」を行うと、連絡先アプリケーションから Uri を受け取ります)。

    Uri uri = Uri.parse("content://com.android.contacts/contacts/as_vcard/0r1-47532F494753492F475349532F492F53492F3D533B49393B3D47532F");
    try {

        InputStream fis = getContentResolver().openInputStream(uri);

        byte[] buffer = new byte[1024];
        fis.read(buffer);
    } catch (Exception e)
    {
        Log.d("zzz", e.getMessage());
    }

このようなコードは、エミュレーターでのみ fis.read 操作で "java.io.IOException: read failed: EINVAL (Invalid argument)" をスローします (実際のデバイスでは正常に動作します)。Android 4.0.3 および 4.1.2 エミュレーターで試しました (両方とも失敗します)。

同様の質問を見ました (この問題の説明): vCard の連絡先データを読み取ろうとすると、Android の読み取りに失敗しました。

関連する (または関連しない) バグ: http://code.google.com/p/android/issues/detail?id=26480

エミュレーターで自動テストを実行していますが、この問題によりいくつかのテストを実行できません。

2 つの質問:

a) この動作を見たことがありますか?

b) この問題の回避策を知っていますか?

4

0 に答える 0