如何在自己的App中呼叫Android系統自帶的安裝/解除安裝程式
AppUtils裡面寫了如何安裝和解除安裝apk(這段程式碼出自這裡:點選開啟連結~),這裡的安裝和解除安裝呼叫的是Android本身的一個安裝解除安裝,所以可能頁面不會太優雅,並不符合商業App的期望,如果要做到更優雅的實現,就要用到靜默安裝/解除安裝,這個可以參照網上教程,我這裡有一篇轉載還是很不錯的,大家可以參照一下:Android中實現靜態的預設安裝和解除安裝應用~
public class AppUtils { /* 安裝apk */ public void installApk(Context context, String fileName) { Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setDataAndType(Uri.parse("file://" + fileName), "application/vnd.android.package-archive"); context.startActivity(intent); } /* 解除安裝apk */ public void uninstallApk(Context context, String packageName) { // Uri uri = Uri.parse("package:" + packageName); Uri uri = Uri.fromParts("package", packageName, null); Intent intent = new Intent(Intent.ACTION_DELETE, uri); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);//一開始這句話是沒有的,執行的時候就報了這個錯誤“ android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want? ”,百度之後,得知,從一個Activity中要通過intent調出另一個Activity的話需要加上這個flag,所以各位切記,這句話不能漏 context.startActivity(intent); } }
在MainActivity中是這樣使用的,在這裡,我以安裝企鵝為例,先把企鵝的apk放到了我自定義好的一個資料夾中:
public class MainActivity extends Activity { AppUtils appUtils = new AppUtils(); String fileName = ""; String packageName = ""; Button btnCopyTp; @BindView(R.id.btn_xz) Button btnXz; @BindView(R.id.btn_az) Button btnAz; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); } @OnClick({R.id.btn_xz, R.id.btn_az) public void onClick(View view) { switch (view.getId()) { case R.id.btn_xz://解除安裝程式 String archiveFilePath = Environment.getExternalStorageDirectory() + "/MyFiles/Download/QQ_482.apk";//安裝包路徑 PackageManager pm = getPackageManager(); PackageInfo info = pm.getPackageArchiveInfo(archiveFilePath, PackageManager.GET_ACTIVITIES); if (info != null) { ApplicationInfo appInfo = info.applicationInfo; packageName = appInfo.packageName; //得到安裝包名稱 xz(context, packageName); } break; case R.id.btn_az://安裝程式 fileName = Environment.getExternalStorageDirectory() + "/MyFiles/Download/QQ_482.apk"; File file = new File(fileName); if (file.exists()) { az(context, fileName); } break; } } public void az(Context context, String fileName) { appUtils.installApk(context, fileName); } public void xz(Context context, String packageName) { appUtils.uninstallApk(context, packageName); } }
佈局檔案:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.honey.mytest.activity.MainActivity"> <Button android:text="通過我們的APP解除安裝其他應用" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/btn_xz" android:layout_below="@+id/btn_copy_tp" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_marginTop="56dp" /> <Button android:text="通過我們的APP安裝其他應用" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/btn_xz" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:id="@+id/btn_az" /> </RelativeLayout>
相關推薦
如何在自己的App中呼叫Android系統自帶的安裝/解除安裝程式
AppUtils裡面寫了如何安裝和解除安裝apk(這段程式碼出自這裡:點選開啟連結~),這裡的安裝和解除安裝呼叫的是Android本身的一個安裝解除安裝,所以可能頁面不會太優雅,並不符合商業App的期望,如果要做到更優雅的實現,就要用到靜默安裝/解除安裝,這個可以參照網上教
呼叫Android系統自帶相機拍照,從相簿中獲取圖片(相容7.0系統)
一,前言: 在日常的手機應用開發過程中,經常會遇到上傳圖片的需求,像上傳頭像之類的,這就需要呼叫系統的相機,相簿獲取照片。但是在Android 系統7.0之後認為這種操作是不安全的,這篇文章主要就是記錄7.0獲取照片遇到的問題。 二,FileProvider介紹 都
KEIL自己製作庫檔案呼叫。系統自帶的庫檔案不一定用這種方法
Keil的lib生成個人總結 1. 生成lib 的工程可以沒有main函式,可以只有一個.c檔案,一個.c檔案中可以只有一個函式 2. 需要在lib工程中建立一個.h檔案, 必須 用extern 宣告各全域性變數和函式. 3. 呼叫lib檔案的工程中必須包括lib中的.
調用aNDROID系統自帶功能
ont hao123 provide music content vid uri android系統 系統 CONTENTpROVIDER%E5%9F%BA%E7%A1%80%E4%B9%8BURI http://music.hao123.com/songlist/495
Android系統自帶的MediaRecorder結合Camera實現視訊錄製及播放功能。
近期,公司專案新增了需求,需要視訊錄製,然後儲存到本地,再播放...。 看了很多其他的框架,說不出好壞,應該說各有千秋吧。但我覺得還是原生的靠譜,就是谷歌系統自帶的MediaRecorder。 不多說上程式碼吧(已經測試,沒問題)。 程式碼沒什麼複雜的,都是些
Android 系統自帶圖片裁剪功能(適配7.0、8.0、對了還有小米手機)
前段時間寫了如何獲取相簿和拍照之後的照片並且進行顯示和上傳,這一次是如何進行圓形影象製作,經常看我寫的筆記的人會知道,我很懶。那麼我就懶的自定義了,目前需求就用原生的就好了,大神的輪子,我會在後面進行推薦。這篇筆記是依賴於:Android呼叫相簿、相機(相容6.0、7.0、8.0) 文
Android系統自帶的camera預設使用後置攝像頭
a/packages/apps/Camera/src/com/android/camera/CameraSettings.java +++ b/packages/apps/Camera/src/com/android/camera/CameraSettings.java @@ -420,
Android系統自帶Spinner+Adapter基礎
屬性:android:spinnerMode="" 下拉選單的展示方式 屬性值:dropdown-下拉方式(預設的) dialog-對話方塊方式 如果下拉方式是dialog,那麼可以指定標題android:prompt="@string/title"(只能引用,不能直接寫文字) androi
android系統自帶的適配佈局activity_list_item
理想:註冊頁面,資訊填寫後,跳轉到另外一個activity 結果:一點註冊,app就閃退 日誌顯示:java.lang.IllegalStateException: ArrayAdapter requ
Android系統自帶更新DownloadManager用法
效果圖如下: ↳ android.app.DownloadManager 下載管理器是一個處理長時間執行的HTTP下載的系統服務,通過此API請求下載的應用程式應為ACTION_NOTIFICATION_CLICKED註冊一個廣播接收器,以便在使用者單擊通
Android系統自帶AEC/AGC/NC的demo
1.聲學回聲消除器(AEC) AcousticEchoCanceler類消除了從遠端捕捉到音訊訊號上的訊號的作用,回聲消除AcousticEchoCanceler繼承自AudioEffect. 2.自動
Android 系統自帶Activity效果
1.fullscreen Activity 佈局: <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.and
android 系統自帶主題樣式及自定義主題樣式
From: http://blog.csdn.net/dawanganban/article/details/17732701 http://www.cnblogs.com/bluestorm/archive/2012/07/12/2588724.html
Android-系統自帶通知欄and自定義通知欄
系統自帶通知欄:在佈局檔案中寫一個button,寫一個sendNotification方法public void sendNotification(View view){ //例項化通知管理器 NotificationManager notif
用NDK呼叫Android手機自帶的openssl庫函式
目標: 目前很多Android手機已經自帶了openssl庫, 即libssl.so, libcrypto.so, 以下示例實現了APK通過NDK呼叫openssl庫函式PKCS5_PBKDF2_HMAC(金鑰生成演算法) 1) 在android工程中建立 jni目錄 2)
Android系統自帶主題初探
Android系統有很多自帶的主題,而且,隨著Androi版本的不斷更新,系統的預設主題也在不斷的變化,這裡就簡要介紹一下5.0系統的主題。 1. 系統自帶的主題 那麼系統自帶的主題有哪些呢,在工程目錄\frameworks\base\core\res\res\values
Android系統自帶分享功能的實現(可同時分享文字和圖片)
簡單,不解釋,直接上程式碼,可直接使用! 程式碼如下: /** * 分享功能 * * @param context * 上下文 * @param activ
Android 系統自帶隱式intent應用
完成效果:撥打電話,傳送簡訊,播放音樂,播放視訊,開啟網頁,檢視圖片,通知欄。 PopWindow中完成效果:拍照片,從相簿選擇照片並且可裁減。 首先在清單檔案中加入如下許可權: <uses-permission android:name="android.perm
Android有趣的全透明效果--Activity及Dialog的全透明(附android系統自帶圖示大全)
1.Activity全透明 同學zzm給了這個有趣的程式碼,現在公佈出來。 先在res/values下建colors.xml檔案,寫入: <? xml version = "1.0" encoding = "UTF-8" ?> < resour
Android系統自帶樣式(android:theme)
android:theme="@android:style/Theme.Dialog" : Activity顯示為對話方塊模式 android:theme="@android:style/Theme.NoTitleBar" : 不顯示應用程式標題欄 android:t