0

PICK インテント フィルターを実装しようとしていますが、これまでのところコンテキスト メニューに表示されていますが、その方法でアプリを起動した人に応答するにはどうすればよいですか?

アクティビティがあるとしましょう:

    <activity
        android:name="ListActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.PICK" />

            <category android:name="android.intent.category.DEFAULT" />

            <data android:mimeType="image/*" />
        </intent-filter>
    </activity>

今、私は写真を共有し、自分のアプリを選択してそれを取得することで、Facebook を介してこのアクティビティを開始します。次のコードがあります。

File f = new File(Environment.getExternalStorageDirectory(), "image.jpg");
Uri uri = Uri.fromFile(f);
if(f.exists()) System.out.println("exists");
Intent data = new Intent();
data.setData(uri);
setResult(RESULT_OK, data);
finish();

ただし、Facebook アプリ (現在実装をテストしている場所) では何も起こりません。代わりに、Facebook の「写真を共有」を再度使用し、ギャラリー アプリを使用して画像を選択すると、アプリを機能させたいときに機能します。

私は何を間違えましたか?

4

2 に答える 2

0

これを詳しく調査した後、問題は Uri のスキームにあることがわかりました。ファイル スキーム ("file://...") を含む Uri を Facebook アプリに渡すことはできません。それは何もしません。代わりに、コンテンツ スキーム ("content://...") を使用して同じ画像を指定すると、完全に機能します。

これら2つの間の変換方法は別の問題です。

于 2012-08-20T04:28:59.587 に答える
0

彼らは彼らの側で実装を台無しにしたと思います。Facebook アプリがそれほど良くないことは秘密ではありません.あなたのコードは私にとっては問題ないようです (特にギャラリーで動作するため)。

于 2012-08-12T10:19:21.070 に答える