从android Intent.ACTION_SEND中提取文件路径

时间:2014-03-17 17:02:16

标签: android android-intent

是否可以从收到的Intent.ACTION_SEND中提取文件路径?我试图在"分享通过"名单。要做到这一点,我就是这样的清单:

                                  

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

        <data android:mimeType="image/*" />
        <data android:mimeType="audio/*" />
        <data android:mimeType="video/*" />
        <data android:mimeType="application/*" />
        <data android:mimeType="text/*" />

    </intent-filter>
</activity>

现在我从&#34; Share-via&#34;中选择我的应用程序名单。是否可以从接收到的意图(对于所有文件类型)获取完整文件路径?这是我到目前为止所做的:

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Intent intent = getIntent();
    TextView output=(TextView)findViewById(R.id.textview1);
    String action = intent.getAction(); 
    if (action.equalsIgnoreCase(Intent.ACTION_SEND) && intent.hasExtra(Intent.EXTRA_TEXT)) { 
        String s = intent.getStringExtra(Intent.EXTRA_TEXT); 
        output.setText(s); //output: a TextView that holds the URL 
    }
}

我已经看到了许多解决方案,但大多数都只限于图像共享。有什么帮助吗?

1 个答案:

答案 0 :(得分:2)

如果你有

  <action android:name="android.intent.action.VIEW" />

您可以获取文件路径

        _file = getIntent().getData().toString();
    if (_file.startsWith("file:///"))
        _file = _file.substring(7);

获取所有可以使用的mime类型

<data android:mimeType="*/*" />

如果您想分析其他应用的处理方式,您可以使用免费的Android应用intentintercept进行分析