Android6.0自帶檔案管理器無法開啟apk
阿新 • • 發佈:2019-02-20
Android從6.0開始在設定中自帶了一個檔案瀏覽器,在6.0之前系統是不自帶的,但是這個檔案管理器不能開啟apk檔案,不能安裝app。那是因為程式碼裡面沒有對APK檔案做識別處理,下面這個補丁可以幫你搞定.
diff --git a/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java b/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java index a57bcc6..1c41a78 100644 --- a/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java +++ b/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java @@ -27,6 +27,9 @@ import static com.android.documentsui.DirectoryFragment.ANIM_DOWN; import static com.android.documentsui.DirectoryFragment.ANIM_NONE; import static com.android.documentsui.DirectoryFragment.ANIM_UP; + +import java.io.File; + import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -642,12 +645,23 @@ public class DocumentsActivity extends BaseActivity { // Go straight to viewing final Intent view = new Intent(Intent.ACTION_VIEW); view.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); - view.setData(doc.derivedUri); - + // view.setData(doc.derivedUri); + + String path = doc.derivedUri.toString(); + if(path.endsWith(".apk")){ + String path1 = doc.documentId; + String path2 =path1.replace(":","/"); + File file =new File("storage/"+path2); + + view.setDataAndType(Uri.fromFile(file),"application/vnd.android.package-archive"); + }else{ + + view.setData(doc.derivedUri); + } try { startActivity(view); } catch (ActivityNotFoundException ex) { - Toast.makeText(this, R.string.toast_no_application, Toast.LENGTH_SHORT).show(); + Toast.makeText(this, R.string.toast_no_application, Toast.LENGTH_SHORT).show(); } } }