android 默认浏览器 没法下载,此手机不支持此内容(自定义文件or APK文件看过了)

若是你是apk或者android系统能够识别的问题,那么必定是服务器MIME文件类型没有配置正确 java

APK文件配置以下: android

<mime-mapping>
        <extension>apk</extension>
        <mime-type>applicationnd/vnd.android.package-archive</mime-type>
</mime-mapping>



    其余文件请参考MIME配置对照表


下面是android不能下载自定义文件或者不能识别问题的解决方案。 浏览器


Android的默认浏览器,在下载文件时,会验证MimeType,若是这个MimeType不被识别,那么Download Manager会拒绝对其进行下载。Download Crutch可让Download Manager无论是不是可识别的MimeType都进行下载。
凡是挂入系统的应用,总让人以为很神奇。而Download Crutch这个小软件,更是实现的很是巧妙,理论上讲,它能够一行代码都不写就实现这个功能。
想要探究Download Crutch的工做原理,咱们就要从BrowserDownload Manager的工做原理提及。 服务器

Browser的核心是WebView组件,它负责处理全部WebView能够接受(或者说显示)的文件类型。好比HTML页面,或者各类 Image。当WebView遇到一个他不认识的MimeType时,好比application/zip,它就会把它提交给 DownloadManager,请求DownloadManager进行下载。
  DownloadManager在接收到下载请求的时候,并会立 即启动HTTP线程进行下载,它先会构造一个Intent,询问系统内是否有某个应用程序对这个要下载的文件类型该兴趣(或者说,能够在下载后处理这种文 件类型)。若是回应的结果是没有哪一个应用程序处理这个MimeType,那么DownloadManager会拒绝下载这个文件。关键代码以下: app

/*
 * file: DownloadService.java
 * package: com.android.providers.downloads
 */
  Intent mimetypeIntent = new Intent(Intent.ACTION_VIEW);
  mimetypeIntent.setDataAndType(Uri.fromParts("file", "", null), info.mimetype);
  ResolveInfo ri = getPackageManager().resolveActivity(mimetypeIntent,
  PackageManager.MATCH_DEFAULT_ONLY);
  //若是找不到ResolveInfo,则认为没有应用程序能够处理这种mimetype。
  //下载工做将被终止
  if (ri == null) {
      ……
      return;
  }




因此,要想解决DownloadManager拒绝下载的问题,只须要编写一个应用程序,告诉系统全部的MimeType我都能处理,你就尽管下吧。因而就诞生了DownloadCrutch。
要实现DownloadCrutch的功能,只须要创建一个Android Project,编写一个空的Activity,命名为DownloadCrutch,而且在AndroidManifest.xml里进行注册。关键代码以下 ide


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



其中,android:scheme标记对file://xxxxxURI结构进行处理,android:mimeType标记能够处理任意类型的文件。 spa

 如今你的文件能默认浏览器下载下来了,你打开文件后就会条跳转到DownloadCrutch这个activity,后面就须要本身编写代码处理文件了。 线程

相关文章
相关标签/搜索