最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android編程監(jiān)聽APK安裝與刪除等過程的方法

 更新時間:2017年10月12日 10:54:34   作者:jia635  
這篇文章主要介紹了Android編程監(jiān)聽APK安裝與刪除等過程的方法,涉及Android事件監(jiān)聽、權(quán)限控制、廣播操作等相關(guān)實現(xiàn)技巧,需要的朋友可以參考下

本文實例講述了Android編程監(jiān)聽APK安裝與刪除等過程的方法。分享給大家供大家參考,具體如下:

軟件下載后的一系列動作監(jiān)聽:先前是通過Service監(jiān)聽掃描獲取狀態(tài),以后用這個方法測試使用

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
public class getBroadcast extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
         if(Intent.ACTION_PACKAGE_ADDED.equals(intent.getAction())){
          Toast.makeText(context, "有應(yīng)用被添加", Toast.LENGTH_LONG).show();
      }
        else if(Intent.ACTION_PACKAGE_REMOVED.equals(intent.getAction())){
          Toast.makeText(context, "有應(yīng)用被刪除", Toast.LENGTH_LONG).show();
      }
       /*  else if(Intent.ACTION_PACKAGE_CHANGED.equals(intent.getAction())){
          Toast.makeText(context, "有應(yīng)用被改變", Toast.LENGTH_LONG).show();
      }*/
        else if(Intent.ACTION_PACKAGE_REPLACED.equals(intent.getAction())){
          Toast.makeText(context, "有應(yīng)用被替換", Toast.LENGTH_LONG).show();
      }
        /* else if(Intent.ACTION_PACKAGE_RESTARTED.equals(intent.getAction())){
          Toast.makeText(context, "有應(yīng)用被重啟", Toast.LENGTH_LONG).show();
      }*/
       /* else if(Intent.ACTION_PACKAGE_INSTALL.equals(intent.getAction())){
          Toast.makeText(context, "有應(yīng)用被安裝", Toast.LENGTH_LONG).show();
      }*/
    }
}

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="zy.Broadcast"
   android:versionCode="1"
   android:versionName="1.0">
  <application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:name=".Broadcast"
         android:label="@string/app_name">
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
    </activity>
   <receiver android:name="getBroadcast" android:enabled="true" >
     <intent-filter>
     <action android:name="android.intent.action.PACKAGE_ADDED"></action>
     <!-- <action android:name="android.intent.action.PACKAGE_CHANGED"></action>-->
     <action android:name="android.intent.action.PACKAGE_REMOVED"></action>
     <action android:name="android.intent.action.PACKAGE_REPLACED"></action>
     <!-- <action android:name="android.intent.action.PACKAGE_RESTARTED"></action>-->
    <!--  <action android:name="android.intent.action.PACKAGE_INSTALL"></action>-->
      <data android:scheme="package"></data>
       </intent-filter>
</receiver>
  </application>
  <uses-sdk android:minSdkVersion="7" />
</manifest>

代碼實現(xiàn)添加:

private final BroadcastReceiver apkInstallListener = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
      if(Intent.ACTION_PACKAGE_ADDED.equals(intent.getAction())){
      System.out.println("**************Broadcase*************");
      File file = uninstallApk.get(isDeleted);
      System.out.println(file.toString()+"*****");
       file.delete();
        //System.out.println(uninstallApk.size()+"(*******"+uApks.size());
       if(uninstallApk!=null&&uApks!=null)
       {
       uninstallApk.remove(isDeleted);
       uApks.remove(isDeleted);
       }
      //清除集合里面的值
        if(uninstallApk!=null)
        {
         System.out.println("onpause******"+uninstallApk.size());
         uninstallApk.clear();
        }
        if(uApks!=null)
        {
         uApks.clear();
        }
          System.out.println("******應(yīng)用添加***"+isDeleted);
       Toast.makeText(context, "有應(yīng)用被添加"+isDeleted, Toast.LENGTH_LONG).show();
      }
        else if(Intent.ACTION_PACKAGE_REMOVED.equals(intent.getAction())){
          System.out.println("*****應(yīng)用被刪除");
         Toast.makeText(context, "有應(yīng)用被刪除", Toast.LENGTH_LONG).show();
      }
       /*  else if(Intent.ACTION_PACKAGE_CHANGED.equals(intent.getAction())){
          Toast.makeText(context, "有應(yīng)用被改變", Toast.LENGTH_LONG).show();
      }*/
        else if(Intent.ACTION_PACKAGE_REPLACED.equals(intent.getAction())){
          System.out.println("****應(yīng)用被替換");
         Toast.makeText(context, "有應(yīng)用被替換", Toast.LENGTH_LONG).show();
      }
        /* else if(Intent.ACTION_PACKAGE_RESTARTED.equals(intent.getAction())){
          Toast.makeText(context, "有應(yīng)用被重啟", Toast.LENGTH_LONG).show();
      }*/
       /* else if(Intent.ACTION_PACKAGE_INSTALL.equals(intent.getAction())){
          Toast.makeText(context, "有應(yīng)用被安裝", Toast.LENGTH_LONG).show();
      }*/
  }
};
// 注冊監(jiān)聽
private void registerSDCardListener(){
    IntentFilter intentFilter = new IntentFilter(Intent.ACTION_MEDIA_MOUNTED);
    intentFilter.addAction(Intent.ACTION_PACKAGE_ADDED);
    intentFilter.addAction(Intent.ACTION_PACKAGE_REMOVED);
    intentFilter.addAction(Intent.ACTION_PACKAGE_REPLACED);
    intentFilter.addDataScheme("package");
    registerReceiver(apkInstallListener, intentFilter);
}

java里的調(diào)用 registerSDCardListener()

@Override
protected void onDestroy()
{
 super.onDestroy();
 //unregisterReceiver(apkInstallListener);
}

更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android開發(fā)入門與進(jìn)階教程》、《Android調(diào)試技巧與常見問題解決方法匯總》、《Android基本組件用法總結(jié)》、《Android視圖View技巧總結(jié)》、《Android布局layout技巧總結(jié)》及《Android控件用法總結(jié)

希望本文所述對大家Android程序設(shè)計有所幫助。

相關(guān)文章

  • android之BroadcastReceiver應(yīng)用詳解

    android之BroadcastReceiver應(yīng)用詳解

    這篇文章主要介紹了android之BroadcastReceiver應(yīng)用詳解,BroadcastReceiver也就是“廣播接收者”的意思,顧名思義,它就是用來接收來自系統(tǒng)和應(yīng)用中的廣播。有興趣的可以了解一下。
    2016-12-12
  • 正確在Flutter中添加webview實現(xiàn)詳解

    正確在Flutter中添加webview實現(xiàn)詳解

    這篇文章主要為大家介紹了正確在Flutter中添加webview實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • Android利用zxing快速集成二維碼掃描的實例教程

    Android利用zxing快速集成二維碼掃描的實例教程

    最近二維碼真是越來越火了,隨便電視上、網(wǎng)絡(luò)上、商場里,到處都是二維碼,所以下面這篇文章我們就來給大家介紹關(guān)于Android利用zxing快速集成二維碼掃描的相關(guān)資料,需要的朋友可以參考借鑒,下面隨著小編來一起看看吧。
    2017-09-09
  • Android中獲取資源 id 及資源 id 的動態(tài)獲取

    Android中獲取資源 id 及資源 id 的動態(tài)獲取

    這篇文章主要介紹了 Android中獲取資源 id 及資源 id 的動態(tài)獲取的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • View Controller Transition實現(xiàn)京東加購物車效果

    View Controller Transition實現(xiàn)京東加購物車效果

    這篇文章主要介紹了View Controller Transition實現(xiàn)京東加購物車效果,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-02-02
  • Flutter路由之fluro的配置及跳轉(zhuǎn)

    Flutter路由之fluro的配置及跳轉(zhuǎn)

    本文主要介紹了Flutter路由之fluro的配置及跳轉(zhuǎn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Android組件化開發(fā)路由的設(shè)計實踐

    Android組件化開發(fā)路由的設(shè)計實踐

    本篇文章主要介紹了Android組件化開發(fā)路由的設(shè)計實踐,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • Android仿IOS自定義AlertDialog提示框

    Android仿IOS自定義AlertDialog提示框

    本篇文章主要介紹了Android仿IOS自定義AlertDialog對話框,主要介紹了圓角AlertDialog對話框,具有一定的參考價值,有興趣的可以了解一下。
    2017-03-03
  • Android開發(fā)實現(xiàn)的簡單計算器功能【附完整demo源碼下載】

    Android開發(fā)實現(xiàn)的簡單計算器功能【附完整demo源碼下載】

    這篇文章主要介紹了Android開發(fā)實現(xiàn)的簡單計算器功能,結(jié)合實例形式分析了Android計算器的具體實現(xiàn)步驟與相關(guān)操作技巧,并附帶完整demo源碼供讀者下載參考,需要的朋友可以參考下
    2017-11-11
  • Jetpack Compose按鈕組件使用實例詳細(xì)講解

    Jetpack Compose按鈕組件使用實例詳細(xì)講解

    這篇文章主要介紹了Jetpack Compose按鈕組件使用實例,按鈕組件Button是用戶和系統(tǒng)交互的重要組件之一,它按照Material Design風(fēng)格實現(xiàn),我們先看下Button的參數(shù)列表,通過參數(shù)列表了解下Button的整體功能
    2023-04-04

最新評論

洛阳市| 鄢陵县| 桐庐县| 永平县| 镇原县| 成安县| 静海县| 和田市| 梁河县| 龙山县| 南昌县| 延庆县| 儋州市| 灵璧县| 永年县| 邻水| 平江县| 漳浦县| 包头市| 文山县| 桐梓县| 枞阳县| 淳化县| 田阳县| 六安市| 尼勒克县| 黔西县| 伊金霍洛旗| 万山特区| 崇仁县| 五原县| 泾川县| 夏河县| 鄄城县| 罗平县| 乌拉特后旗| 平利县| 文成县| 垦利县| 新兴县| 简阳市|