1. 程式人生 > >Android 7.0自動安裝APP並啟動

Android 7.0自動安裝APP並啟動

最近用了一部新手機來開發,突然發現程式碼還是以前的,就是不能實現自動啟動,仔細查了一下,原來是API限制了
上程式碼:
低版本:
下載完成後的apk檔案就可以直接安裝

            Intent install = new Intent(Intent.ACTION_VIEW);
            install.setDataAndType(Uri.fromFile(apkFile), "application/vnd.android.package-archive");
            install.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(install);

Android 7.0以上就不可以這麼簡單了,
首先是要進行註冊一個元件(四大元件之一provider)
即:在配置清單中:
願意不解釋,網上一大堆理由
第一步:

        <provider
            android:name="android.support.v4.content.FileProvider"
            android:authorities="${applicationId}.fileprovider"
            android:grantUriPermissions
="true" android:exported="false">
<meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths" /> </provider>

第二步:
穿件xml檔案
這裡寫圖片描述
內容:

<resources xmlns:android="http://schemas.android.com/apk/res/android"
>
<paths> <external-path path="" name="download"/> </paths> </resources>

path就等於空字串就可以了
第三步:
程式碼啟動

            Uri apkUri = FileProvider.getUriForFile(this, "完整包名.fileprovider", apkFile);//在AndroidManifest中的android:authorities值
            Intent install = new Intent(Intent.ACTION_VIEW);
            install.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            install.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
            install.setDataAndType(apkUri, "application/vnd.android.package-archive");
            startActivity(install);

OK完成

注意:有一個很有意思的事,互不相容,所以我們要自己要判斷資訊

  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            //判讀版本是否在7.0以上
            新的啟動方法
            }else{
            //以前的啟動方法
}

相關推薦

Android 7.0自動安裝APP啟動

最近用了一部新手機來開發,突然發現程式碼還是以前的,就是不能實現自動啟動,仔細查了一下,原來是API限制了 上程式碼: 低版本: 下載完成後的apk檔案就可以直接安裝 Intent install = new Intent

Mac下monkeyrunner安裝App啟動

實踐案例: 連線裝置,安裝考研幫App並啟動 程式碼實現 from com.android.monkeyrunner import MonkeyRunner as mr from com.android.monkeyrunner import MonkeyDev

為什麼應用程式在Android 7.0之後安裝和執行都變得更快?

需要了解幾個概念 Dalvik 虛擬機器 負責解釋dex檔案為機器碼,每次執行程式碼,都需要Dalvik將dex程式碼翻譯為微處理器指令,然後交給系統處理,這樣效率不高。 JIT(Just-In-Time) 為了解決上面的問題,Google在2

android 7.0之後安裝apk

android 7.0行為變更中系統許可權的更改裡面提到: 傳遞軟體包網域外的 file:// URI 可能給接收器留下無法訪問的路徑。因此,嘗試傳遞 file:// URI 會觸發 FileUriE

Android-7.0系統安裝異常之解析包錯誤

關於這個毛茸茸的小錯誤 最新在開發一個新的 APP ,自己手動寫了版本更新,測試發現,覆蓋安裝的時候,在 Android 7.0 系統上出現解析包錯誤。 報錯資訊: 核心報錯資訊: java.lang.SecurityException: P

Android 7.0 下載APK後自動安裝

mime 顯示 sse cast works 入口 新的 限制 itl 隨著Android版本越來越高,Android對隱私的保護力度也越來越大。這些隱私權限的更改在為用戶帶來更加安全的操作系統的同時也為開發者帶來了一些新的任務。如何讓你的APP能夠適應這些

Android 7.0 app升級內部安裝apk—FileProvider使用

隨著Android 版本升級 Google在保護使用者隱私和安全方面增加了力度 像Android 6.0 細分了普通許可權和高危許可權,涉及到高危許可權則需要及時申請使用者必須感知。Android7.0 增加了 "StrictMode API" 政策即私有目錄限制訪問。本篇講解一下如何在Androi

android app 更新下載安裝 適配android 7.0

public class UpdataService extends Service { public UpdataService() { } /** * 安卓系統下載類 **/ private DownloadManager manager; /

android 7.0 app安裝問題

有時候我們在程式裡,下載了一個app,需要自動的調出安裝介面,在7.0之前,我們直接這樣呼叫就可以了,如下: Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.fromFil

Android 7.0 安裝失敗的兩個原因 Failed to collect certificates from /data/app/vmd......

提示安裝失敗,安裝包不完整 原因 這是因為Android7.0作用域目錄訪問  在 Android 7.0 中,應用可以使用新的 API 請求訪問特定的外部儲存目錄,包括可移動媒體上的目錄,如 SD 卡。新 API 大大簡化了應用訪問標準外部儲存目錄的方式,如 P

Android 7.0 Gallery圖庫源碼分析2 - 分析啟動流程

rec star bject erro argument hold default add 切換 前面一講解了Gallery啟動Activity以及界面如何繪制,現在開始講解啟動流程的代碼邏輯。 GalleryActivity的onCreate方法中調用initialize

Kettle 7.1.0.0-12 安裝版無法啟動的問題

1.Kettle無法啟動解決方法: 只要修改一下spoon.bat裡記憶體配置: if "%PENTAHO_DI_JAVA_OPTIONS%"=="" set PENTAHO_DI_JAVA_OPTIONS="-Xms2058m" "-Xmx1024m" "-XX:MaxPerm

android 7.0安裝apk失敗

7.0中通過FileProvider 來對Content URI讀取授權處理 可參考谷歌官網對FileProvider的說明點選開啟連結。 1.在AndroidManifest.xml中定義FileProvider: <manifest xmlns:android="http

【轉】Android-Accessibility(輔助功能/無障礙,自動安裝APP)

參考: http://www.infoq.com/cn/articles/android-accessibility-installing https://developer.android.com/guide/topics/ui/accessibility/services https://devel

android 下載apk後安裝apk(適配android 7.0)

    為適配7.0以後系統,首先需要在AndroidManifest.xml檔案中application節點下定義provider,如下:   <provider          android:nam

android 7.0 root下靜默安裝

公司產品基於7.0開發,需要實現覆蓋升級。之前的產品覆蓋升級基於5.1系統,在7.0上不起作用。網上參考了許多部落格。最終稀裡糊塗的成功了,簡單記錄。 核心程式碼只有一句 String command

android 7.0拍照問題file:///storage/emulated/0/photo.jpeg exposed beyond app through ClipData.Item.getUri

Android7.0呼叫相機時出現新的錯誤: android.os.FileUriExposedException: file:///storage/emulated/0/photo.jpeg exp

Android 7.0系統啟動流程分析

隨著Android版本的升級,aosp專案中的程式碼也有了些變化,本文基於Android 7.0分析Android系統啟動流程.當我們按下電源鍵後,整個Android裝置大體經過了一下過程: 今天我們只想來分析init程序及其後的過程,也就是下圖所示部分:

Android 7.0app所需高階許可權的解除限制的方法

---- by Shengwen.Wei 一、    概述         隨著移動網際網路的發展,使用者對於自身的資訊保安越來越重視,基於此,android系統對於使用者自身的資訊保安特別是android M(6.0)以後,對於許可權的管理尤為嚴格。 二、    高階許

Android 7.0應用冷啟動流程分析

最近在為自己Moto G定製Rom,順便重新讀了一遍Android 7.0的相關原始碼,特此記錄當做筆記. 在開始正文之前,首先要明白冷啟動和熱啟動.所謂冷啟動就是啟動該應用時,後臺沒有該應用的程序,此時系統會建立一個程序分配給它(AMS通過Socket和Zy