国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Android - Android 監聽apk安裝替換卸載廣播的實現代碼

Android 監聽apk安裝替換卸載廣播的實現代碼

2021-02-03 12:41Android開發網 Android

以下代碼實現比較簡單,根據接收到的Action來判斷應用程序是安裝 卸載還是被替換成其他版本,需要的朋友可以參考下

首先是要獲取應用的安裝狀態,通過廣播的形式
以下是和應用程序相關的Broadcast Action
ACTION_PACKAGE_ADDED 一個新應用包已經安裝在設備上,數據包括包名(最新安裝的包程序不能接收到這個廣播)
ACTION_PACKAGE_REPLACED 一個新版本的應用安裝到設備,替換之前已經存在的版本
ACTION_PACKAGE_CHANGED 一個已存在的應用程序包已經改變,包括包名
ACTION_PACKAGE_REMOVED 一個已存在的應用程序包已經從設備上移除,包括包名(正在被安裝的包程序不能接收到這個廣播)
ACTION_PACKAGE_RESTARTED 用戶重新開始一個包,包的所有進程將被殺死,所有與其聯系的運行時間狀態應該被移除,包括包名(重新開始包程序不能接收到這個廣播)
ACTION_PACKAGE_DATA_CLEARED 用戶已經清楚一個包的數據,包括包名(清除包程序不能接收到這個廣播)

代碼實現
在AndroidManifest.xml中定義廣播

復制代碼 代碼如下:


<receiver android:name=".AppInstallReceiver"
            android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.PACKAGE_ADDED" />
                <action android:name="android.intent.action.PACKAGE_REPLACED" />
                <action android:name="android.intent.action.PACKAGE_REMOVED" />
                <data android:scheme="package" />
            </intent-filter>
        </receiver>


這里選用的是
ACTION_PACKAGE_ADDED 一個新應用包已經安裝在設備上,數據包括包名(最新安裝的包程序不能接收到這個廣播)
ACTION_PACKAGE_REPLACED 一個新版本的應用安裝到設備,替換之前已經存在的版本
ACTION_PACKAGE_REMOVED 一個已存在的應用程序包已經從設備上移除,包括包名(正在被安裝的包程序不能接收到這個廣播)
再看AppInstallReceiver

復制代碼 代碼如下:


public class AppInstallReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        PackageManager manager = context.getPackageManager();
        if (intent.getAction().equals(Intent.ACTION_PACKAGE_ADDED)) {
            String packageName = intent.getData().getSchemeSpecificPart();
            Toast.makeText(context, "安裝成功"+packageName, Toast.LENGTH_LONG).show();
        }
        if (intent.getAction().equals(Intent.ACTION_PACKAGE_REMOVED)) {
            String packageName = intent.getData().getSchemeSpecificPart();
            Toast.makeText(context, "卸載成功"+packageName, Toast.LENGTH_LONG).show();
        }
        if (intent.getAction().equals(Intent.ACTION_PACKAGE_REPLACED)) {
            String packageName = intent.getData().getSchemeSpecificPart();
            Toast.makeText(context, "替換成功"+packageName, Toast.LENGTH_LONG).show();
        }

    }
}


代碼實現比較簡單,根據接收到的Action來判斷應用程序是安裝 卸載還是被替換成其他版本

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 高清一区二区三区 | 日本成人片网站 | 久久亚洲一区二区三区明星换脸 | 欧美日韩在线观看视频 | 国产成人精品免高潮在线观看 | 国产精品久久久久久久久久三级 | 亚洲综合色自拍一区 | 亚洲欧美日韩在线 | 免费午夜视频 | 国产精品一区二 | 日韩看片 | 亚洲精品欧美精品 | 国产一区二区三区在线视频 | 欧美成人精品激情在线观看 | 国产噜噜噜噜噜久久久久久久久 | 午夜精品美女久久久久av福利 | 亚洲免费观看视频 | 久一久久| 欧美日韩精品一区二区三区蜜桃 | 中文字幕中文字幕 | 欧美性一区二区三区 | 亚洲影视一区 | 一区二区精品在线视频 | 亚洲男人的天堂视频 | 一区二区三区久久 | 一级片av| 亚洲精品99 | 久久不卡| 欧美自拍网 | 日韩精品一区二区三区在线 | 天天操狠狠操 | 一区二区日韩精品 | 久久大香 | 欧美日一区二区 | 中文字幕在线观看精品视频 | 国产这里只有精品 | 中文字幕在线观看一区 | 午夜视频在线播放 | 99999色| www.久草| 玖玖综合网|