我在场景中遇到的问题如:: 我有一个活动收到一封电子邮件,附带shtml文件。 如何打开附件。
或者我该如何处理?
请帮助
答案 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);
祝你好运