如何調用系統的包安裝本身的apk呢?

其實看着覺着好像不知道如何實現其實就是調用系統的intent來完成安裝java

案例驅動:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public void onSuccess(File t) {
      // 下載成功的條件下,替換應用程序
      // TODO 這裏的東西不是很理解
      // 下載成功 替換安裝 應用程序.
      // <action
      // android:name="android.intent.action.VIEW"
      // />
      // <category
      // android:name="android.intent.category.DEFAULT"
      // />
      // <data android:scheme="content" />
      // <data android:scheme="file" />
      // <data
      // android:mimeType="application/vnd.android.package-archive"
      // />
      Intent intent =  new Intent();
      intent.setAction( "android.intent.action.VIEW" );
      intent.addCategory( "android.intent.category.DEFAULT" );
      intent.setDataAndType(Uri.fromFile(t),
             "application/vnd.android.package-archive" );
      Log.i(TAG,  "成功進行下載" );
      startActivity(intent);
      super .onSuccess(t);
  }

段代碼是在斷點下載功能中實現的,也就是在成功下載了應用的狀況下,安裝更新文件主要是須要掌握如何去調用這個Intent也就是如何setActionaddCategorysetDataAndType。而這些東西能夠查看源代碼獲取到。那麼這裏就有一個很關鍵的問題了,怎麼經過源代碼找到須要的intent設置信息呢?android

經過查找源代碼中的apps中,發現有一個packageInstaller,看名字便知道這是一個安裝應用的系統應用,那麼如何調用它呢?直接查看他的清單文件能夠看到以下信息:app

案例驅動:

1
2
3
4
5
6
7
8
9
10
11
<activity android:name= ".PackageInstallerActivity"
                  android:configChanges= "orientation|keyboardHidden"
                  android:theme= "@style/TallTitleBarTheme" >
              <intent-filter>
                  <action android:name= "android.intent.action.VIEW" />
                  <category android:name= "android.intent.category.DEFAULT" />
                  <data android:scheme= "content" />
                  <data android:scheme= "file" />
                  <data android:mimeType= "application/vnd.android.package-archive" />
              </intent-filter>
          </activity>

那麼就能夠知道具體的調用方法了,將相應的參數設置就能夠安裝本身的應用了。spa

歡迎你們留言,這個是我曾經的一些筆記,如今想在網上記錄下來,曾經的點點滴滴,固然確定會有一些紕漏,還望指出code

相關文章
相關標籤/搜索