3

他のアプリから(画像だけでなく、あらゆる種類の)ファイルを受信するようにアプリを登録したいと思います。他のアプリからコンテンツを受信するチュートリアルに従っています。

私は持っています:

  1. アプリのマニフェストを更新しました:

        <intent-filter>
            <action android:name="android.intent.action.SEND" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:mimeType="*/*" />
        </intent-filter>
    
  2. onCreate()アクティビティのメソッドを実装しました:

    Intent intent = getIntent();
    String action = intent.getAction();
    String type = intent.getType();
    
    if (Intent.ACTION_SEND.equals(action) && type != null) {            
        this.handleSend(intent);
    }
    
  3. handleSend()私のプライベートメソッドを実装しました:

    void handleSend(Intent intent) {
        Uri fileUri = (Uri)intent.getParcelableExtra(Intent.EXTRA_STREAM);
    
        if (fileUri != null) {
             // OK, now?
        }
    }
    

を印刷するfileUriと、のようになりcontent://downloads/all_downloads/5ます。しかし、どうすればそのコンテンツにアクセスできますか?

4

2 に答える 2

2

@Selvinが示したように、を使用してその内容getContentResolver().openInputStream(fileUri);を取得します。MIMEタイプはにある必要があります。InputStreamContentProvider UriIntent

于 2012-11-26T15:53:35.537 に答える
0

以下のように方法を変更します

void handleSend(Intent intent) {
        try {
            Uri imageUri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM);
            imageShare.setImageURI(imageUri);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
于 2017-06-20T05:57:32.893 に答える