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=""
android:versionName="1.0" > <uses-sdk
android:minSdkVersion=""
android:targetSdkVersion="" /> <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>
上一篇:Oracle数据分页,并传出数据集


下一篇:STL源码剖析之_allocate函数