我可以成功打开自定义文件扩展名。我的问题是从Gmail中读取内容。我花了几个小时试图弄清楚这个问题,并且必须有一些显而易见的东西。
我在应用程序的AndroidManifest中有一个特定于应用程序的扩展名“.myextension”和以下文件。这部分有效。
<intent-filter
android:icon="@drawable/my_launcher_icon">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:mimeType="application/octet-stream"
android:host="*"
android:pathPattern=".*\\.myextension"
/>
<data
android:mimeType="application/myextension"
android:host="*"
android:pathPattern=".*\\. myextension"
/>
</intent-filter>
我尝试使用以下代码阅读Uri:
Uri data = intent.getData();
if (data == null) {
return;
}
ContentResolver cr = this.getContentResolver();
InputStream is = cr.openInputStream(data);
if (is == null) return;
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
int i;
try {
i = is.read();
while (i != -1)
{
byteArrayOutputStream.write(i);
i = is.read();
}
is.close();
} catch (IOException e) {
e.printStackTrace();
}
String serverURL = byteArrayOutputStream.toString();
is.close();
xxx.myextension文件是我发送给用户的单行文本文件。
当我点按Gmail客户端中的电子邮件附件时,我的活动会收到以下内容(从意图数据中提取):
“内容://com.google.android.gm.email.attachmentprovider/1/22/RAW” mime类型是:“typ = application / myextension”
当我试图阅读它时,我只得到二进制(看似)乱码数据。
当我使用BlueMail点击相同的附件时,我的活动会收到:
“内容://me.bluemail.mail.attachmentprovider/44ce7126-f7f7-46d9-9b6e-41fb391a8de6/10e6c7e0-a0d0-40cc-925e-ef8a5cc3ee72/VIEW” 并且mime类型是“typ = application / octet-stream”
在这种情况下我可以正确读取字符串。 任何帮助将不胜感激。