从其他应用程序接收内容

时间:2012-11-26 15:38:31

标签: android android-intent

我想注册我的应用程序以接收来自其他应用程序的文件(任何类型,而不仅仅是图像)。我正在关注Receiving Content from Other Apps教程。

我有:

  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?
        }
    }
    
  4. 如果我打印fileUri,则类似content://downloads/all_downloads/5。但是我如何访问其内容?

2 个答案:

答案 0 :(得分:1)

正如@Selvin指出的那样,使用getContentResolver().openInputStream(fileUri);获取InputStream ContentProvider内容的Uri。 MIME类型应该在Intent

答案 1 :(得分:0)

如下所示更改方法

void handleSend(Intent intent) {
        try {
            Uri imageUri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM);
            imageShare.setImageURI(imageUri);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }