zoukankan      html  css  js  c++  java
  • Android利用广播监听设备安装和卸载应用程序

    MainActivity如下:

    package cn.testappaddandremove; 
       
    import android.os.Bundle; 
    import android.app.Activity; 
    import android.content.IntentFilter; 
    /**
     * Demo描述:
     * 利用广播监听设备安装和卸载应用程序
     * 
     * 参考资料:
     * http://blog.csdn.net/wangjinyu501/article/details/9664315
     * Thank you very much
     */ 
    public class MainActivity extends Activity { 
        private AppBroadcastReceiver mAppBroadcastReceiver; 
        @Override 
        protected void onCreate(Bundle savedInstanceState) { 
            super.onCreate(savedInstanceState); 
            setContentView(R.layout.main); 
        } 
        @Override 
        protected void onStart() { 
            super.onStart(); 
    //      //方式一:在代码中设置IntentFilter 
    //      mAppBroadcastReceiver=new AppBroadcastReceiver(); 
    //      IntentFilter intentFilter=new IntentFilter(); 
    //      intentFilter.addAction("android.intent.action.PACKAGE_ADDED"); 
    //      intentFilter.addAction("android.intent.action.PACKAGE_REMOVED"); 
    //      intentFilter.addDataScheme("package"); 
    //      this.registerReceiver(mAppBroadcastReceiver, intentFilter); 
               
            //方式二:在Manifest.xml中设置IntentFilter 
            //       测试发现方式二效果更好些 
            mAppBroadcastReceiver=new AppBroadcastReceiver(); 
            IntentFilter intentFilter=new IntentFilter(); 
            this.registerReceiver(mAppBroadcastReceiver,intentFilter); 
        } 
        @Override 
        protected void onDestroy() { 
            if (mAppBroadcastReceiver!=null) { 
                this.unregisterReceiver(mAppBroadcastReceiver); 
            } 
            super.onDestroy(); 
        } 
    }

    AppBroadcastReceiver如下:

    package cn.testappaddandremove; 
       
    import android.content.BroadcastReceiver; 
    import android.content.Context; 
    import android.content.Intent; 
       
    public class AppBroadcastReceiver extends BroadcastReceiver { 
        private final String ADD_APP ="android.intent.action.PACKAGE_ADDED"; 
        private final String REMOVE_APP ="android.intent.action.PACKAGE_REMOVED"; 
        @Override 
        public void onReceive(Context context, Intent intent) { 
            String action=intent.getAction(); 
            if (ADD_APP.equals(action)) { 
                String packageName=intent.getDataString(); 
                System.out.println("安装了:"+packageName); 
            } 
            if (REMOVE_APP.equals(action)) { 
                String packageName=intent.getDataString(); 
                System.out.println("卸载了:"+packageName); 
            } 
        } 
       
    }

    Manifest.xml如下:

    <?xml version="1.0" encoding="utf-8"?> 
    <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
        package="cn.testappaddandremove" 
        android:versionCode="1" 
        android:versionName="1.0" > 
       
        <uses-sdk 
            android:minSdkVersion="8" 
            android:targetSdkVersion="8" /> 
       
        <application 
            android:allowBackup="true" 
            android:icon="@drawable/ic_launcher" 
            android:label="@string/app_name" 
            android:theme="@style/AppTheme" > 
            <activity 
                android:name="cn.testappaddandremove.MainActivity" 
                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="cn.testappaddandremove.AppBroadcastReceiver"> 
                <intent-filter > 
                    <action android:name="android.intent.action.PACKAGE_ADDED" />   
                    <action android:name="android.intent.action.PACKAGE_REMOVED" />   
                    <data   android:scheme="package" />  
                </intent-filter> 
            </receiver> 
               
        </application> 
       
    </manifest>

    main.xml如下:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
        xmlns:tools="http://schemas.android.com/tools" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        > 
       
        <TextView 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:text="监听应用程序的安装和卸载" 
            android:layout_centerInParent="true" 
        /> 
       
    </RelativeLayout>
  • 相关阅读:
    在OC和Swift中使用IBDesignable/IBInspectable
    Swift之贪婪的UIButton
    iOS:如何通过UIEdgeInsetsMake来制作可伸缩的Button
    iOS8中如何将状态栏的字体颜色改为白色
    iOS7 StatusBar 使用小结
    IOS 怎么修改Navigation Bar上的返回按钮文本颜色,箭头颜色以及导航栏按钮的颜色
    android采用videoView播放视频(包装)
    面向对象设计——通用愉快的经历
    OCP-1Z0-051-名称解析-文章12称号
    图片切割工具---产生多个div切割图片 采用for和一的二维阵列设置背景位置
  • 原文地址:https://www.cnblogs.com/zhujiabin/p/5264991.html
Copyright © 2011-2022 走看看