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,後面就須要本身編寫代碼處理文件了。 線程

相關文章
相關標籤/搜索