注册应用程序以阅读电子邮件附件

时间:2016-09-22 15:08:09

标签: android email attachment

我想发送一个在应用程序中创建的文件并将其发送给另一个用户。 此用户应该能够使用应用程序打开附件并使用我发送的文件进行工作。 Mime-type是:java-serialized-object:.ser

我的清单

<application
           <intent-filter>
            <data android:scheme="content" />
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <data
                android:mimeType="application/*"
                android:host="*" 
                android:pathPattern=".*\\.ser"
            /> 
        </intent-filter>

我的观点,包含emailIntent:

Intent emailIntent =  new Intent(Intent.ACTION_SEND);
 emailIntent.setData(Uri.parse("mailto:"));
 emailIntent.setType("text/plain");
 emailIntent.putExtra(Intent.EXTRA_EMAIL, TO);
 emailIntent.putExtra(Intent.EXTRA_CC, CC);
 emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Pentacubes BETA-TEST");
 emailIntent.putExtra(Intent.EXTRA_TEXT, report);

 filename = "level_0_2_0.ser" ;
 File myFile = new File("/sdcard/" + filename); 
 Uri uri = Uri.fromFile(myFile);
 emailIntent.putExtra(Intent.EXTRA_STREAM, uri);
 emailIntent.setType("application/octet-stream");
emailIntent.setType("application/java-serialized-object");

发送电子邮件是o.k. 如果我在电子邮件程序中打开电子邮件,其中包含附件中的.ser,我的应用程序未注册以阅读附件。

1 个答案:

答案 0 :(得分:0)

android:pathPattern的使用可能阻止接收gmail意图,因为在意图的URI中,即使在gmail UI中显示,也没有扩展名。为了检查您是否可以从gmail收到任何意图,请查看此

<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:scheme="content" android:mimeType="*" android:host="*" />
</intent-filter>

通过这种方式,您将能够调试您的应用程序,并找出为所需附件提供的mime类型。

如果您想通过扩展程序过滤收到的意图,您仍然可以通过编程方式进行。