意图过滤从电子邮件打开.html附件...

时间:2012-02-16 05:10:35

标签: android android-intent

我在场景中遇到的问题如::  我有一个活动收到一封电子邮件,附带shtml文件。  如何打开附件。

或者我该如何处理?

请帮助

2 个答案:

答案 0 :(得分:0)

您可以尝试附加到要处理Intent的活动的此类内容。 AFAIK,处理特定文件扩展名的唯一方法是使用pathPattern,因为我不相信你可以保证邮件应用程序如何设置他们没有的文件的MIME类型认。

<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data android:scheme="file" />
    <data android:pathPattern=".*\\.shtml" />
</intent-filter>

与AOSP捆绑在一起的电子邮件应用程序从附加文件中推断出MIME类型,因此如果在静态地图中找不到该类型,则会使用application/xxx,因此您也可以尝试

<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data android:scheme="file" />
    <data android:mimeType="application/shtml" />
</intent-filter>

如果邮件应用使用不同的格式(如content://),则两种情况下的scheme属性可能都是不必要的或阻碍,所以如果它不起作用,请尝试省略该片段。

HTH

答案 1 :(得分:0)

这是我从电子邮件中获取附件的最新版本。如果你使用它,如果你保留我的名字来源就会很酷。

if (intentaction != null) {
        if (intentaction.equals("android.intent.action.VIEW")) {

            Uri data = intent.getData();
            Uri u;

            if (data != null) {
                try {
                    pathname = data.getPath();
                    File f = new File(pathname);
                    boolean b = f.exists();
                    if (!b) {
                        pathname = null;
                    }
                } catch (Exception e) {
                    pathname = null;
                }
                if (pathname == null) {
                    try {
                        is = new BufferedInputStream(getContentResolver()
                                .openInputStream(data));
                        _is = new BufferedInputStream(getContentResolver()
                                .openInputStream(data));
                        // _savefile = true;
                    } catch (FileNotFoundException e) {

                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    Cursor c = getContentResolver().query(data, null, null,
                            null, null);
                    if (c != null) {
                        c.moveToFirst();
                        int fileNameColumnId = c
                                .getColumnIndex(MediaStore.MediaColumns.DISPLAY_NAME);
                        if (fileNameColumnId >= 0) {
                            _previewFileName = c
                                    .getString(fileNameColumnId);
                        }
                        if (_previewFileName == null) {
                            fileNameColumnId = c
                                    .getColumnIndex(MediaStore.MediaColumns.DATA);
                            if (fileNameColumnId >= 0) {
                                pathname = c.getString(fileNameColumnId);
                                File f = new File(pathname);
                                boolean b = f.exists();
                                if (b) {
                                    try {
                                        if (is != null) {
                                            is.close();
                                        }
                                    } catch (IOException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                    }
                                    is = null;
                                    try {
                                        if (_is != null) {
                                            _is.close();
                                        }
                                    } catch (IOException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                    }
                                    _is = null;
                                } else {
                                    pathname = null;
                                }
                            }
                        }
                    }
                }
            }
        }
    }

    // If we have an attachment
    if (is != null) {
        k = new KmlSummary(is);
    } else if (pathname != null) {
        k = new KmlSummary(pathname);

祝你好运