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);来获取InputStreamthat 的内容ContentProvider Uri。MIME 类型应该在Intent.

于 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 回答