DBMNG数据库管理与应用

独立思考能力,对于从事科学研究或其他任何工作,都是十分必要的。
当前位置:首页 > 移动应用 > Android

Android利用广播监听设备安装和卸载应用程序


MainActivity如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
packagecn.testappaddandremove; 
   
importandroid.os.Bundle; 
importandroid.app.Activity; 
importandroid.content.IntentFilter; 
/**
 * Demo描述:
 * 利用广播监听设备安装和卸载应用程序
 * 
 * 参考资料:
 * http://blog.csdn.net/wangjinyu501/article/details/9664315
 * Thank you very much
 */ 
publicclassMainActivity extendsActivity { 
    privateAppBroadcastReceiver mAppBroadcastReceiver; 
    @Override 
    protectedvoidonCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 
    } 
    @Override 
    protectedvoidonStart() { 
        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=newAppBroadcastReceiver(); 
        IntentFilter intentFilter=newIntentFilter(); 
        this.registerReceiver(mAppBroadcastReceiver,intentFilter); 
    } 
    @Override 
    protectedvoidonDestroy() { 
        if(mAppBroadcastReceiver!=null) { 
            this.unregisterReceiver(mAppBroadcastReceiver); 
        } 
        super.onDestroy(); 
    } 
}


AppBroadcastReceiver如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
packagecn.testappaddandremove; 
   
importandroid.content.BroadcastReceiver; 
importandroid.content.Context; 
importandroid.content.Intent; 
   
publicclassAppBroadcastReceiver extendsBroadcastReceiver { 
    privatefinalString ADD_APP ="android.intent.action.PACKAGE_ADDED"; 
    privatefinalString REMOVE_APP ="android.intent.action.PACKAGE_REMOVED"; 
    @Override 
    publicvoidonReceive(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如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?xmlversion="1.0"encoding="utf-8"?> 
<manifestxmlns: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> 
                <actionandroid:name="android.intent.action.MAIN"/> 
   
                <categoryandroid:name="android.intent.category.LAUNCHER"/> 
            </intent-filter> 
        </activity> 
           
        <receiverandroid:name="cn.testappaddandremove.AppBroadcastReceiver"> 
            <intent-filter> 
                <actionandroid:name="android.intent.action.PACKAGE_ADDED"/>   
                <actionandroid:name="android.intent.action.PACKAGE_REMOVED"/>   
                <data  android:scheme="package"/>  
            </intent-filter> 
        </receiver> 
           
    </application> 
   
</manifest>
main.xml如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<RelativeLayoutxmlns: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>
本站文章内容,部分来自于互联网,若侵犯了您的权益,请致邮件chuanghui423#sohu.com(请将#换为@)联系,我们会尽快核实后删除。
Copyright © 2006-2023 DBMNG.COM All Rights Reserved. Powered by DEVSOARTECH            豫ICP备11002312号-2

豫公网安备 41010502002439号