如何添加自定义MIME类型?

我想要的是:能够通过邮件发送我的自定义文件,并将其与我的应用程序从GMail中的预览按钮或在文件浏览器中打开时导入。

我知道:我读过很多自定义MIME类型的处理程序,android不关心文件扩展名等,但是如何为我的自定义文件创建MIME类型?

问题:我是否需要成为内容提供商? 我只想导入文件(从备份)不提供任何东西。 我看到有人处理“application / abc”,说它工作正常,但如何为我的文件“myFile.abc”和MIME类型添加该连接?

一些方向如何注册/映射自定义MIME类型将被认为是! :)


<activity
    android:name="MainActivity"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
    <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:host="{your mime}.com"
               android:scheme="http" >            
        </data>
    </intent-filter>
</activity>

<!--
android:scheme="http" will make android "think" thats this is a link
-->

现在,当您收到带有文本"http://{your mime}.com"的短信或点击该文本链接时,您的活动(MainActivity)将会运行。

你也可以添加参数:

text = "http://{your mime}.com/?number=111";

然后在onCreate()或onResume()方法中添加:

Intent intentURI = getIntent();
Uri uri = null;   
String receivedNum = "";  
Log.d("TAG", "intent= "+intentURI);   
if (Intent.ACTION_VIEW.equals(intentURI.getAction())) {  
    if (intentURI!=null){     
        uri = intentURI.getData();   
        Log.d("TAG", "uri= "+uri);   
    }   
    if (uri!=null)   
        receivedNum = uri.getQueryParameter("number");    
}

据我所知,MIME类型非常灵活(我创建了我的application/whatever ),并立即被Android接受,早在Dalvik版本2.1。 为了正确处理它们,我添加了这个意图过滤器:

<intent-filter>
  <action android:name="android.intent.action.VIEW"/>
  <category android:name="android.intent.category.DEFAULT"/>
  <data android:mimeType="application/whatever" />
</intent-filter>

但有一个警告。 尽管我总是用intent.setType("application/whatever");设置发送Intent的类型, ,在一些手机上,我已经看到实际数据到达application/octet (为了看到值,我分配了传入的Intent并直接检查它的值Intent currentIntent = getIntent(); )。 接收Android设备不知道如何处理传入的数据,并告诉我。 所以我补充说

<intent-filter>
  <action android:name="android.intent.action.VIEW"/>
  <category android:name="android.intent.category.DEFAULT"/>
  <data android:mimeType="application/octet-stream" />
</intent-filter>

当然,这种方法可能会很麻烦,但Gmail的问题至少在于它不一定会在文件名中写入该文件,这使得我选择定义无用的路径。 至少对于传入的octet-stream您知道它不是您窃取的任何应用程序的特定数据......但是,您应该在事后验证数据,而不是假定它对您的应用程序有效。


未经测试,但类似这样的应该工作。 把它放在你的AndroidManifest.xml文件中,并打开你想要打开的文件:

<activity name=".ActivityHere">
    <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="mimeTypeHere" />
    </intent-filter>
</activity>
链接地址: http://www.djcxy.com/p/46929.html

上一篇: How to add custom mime type?

下一篇: How do I get the File Extention for a Mime Type (Content Type)