配置清单文件
<receiver android:name="...">
<intent-filter>
//android.intent.action.PACKAGE_INSTALL谷歌预留的,暂时没有作用 <action android:name="android.intent.action.PACKAGE_INSTALL" />
<action android:name="android.intent.action.PACKAGE_ADDED" />
<action android:name="android.intent.action.PACKAGE_REMOVED" />
//定义data,上面的action才会生效
<data android:scheme="package" />
</intent-filter>
</receiver>
<receiver android:name="...">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
定义卸载安装广播接收者
public class AppStateReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//获取广播的事件类型
String action = intent.getAction();
if ("android.intent.action.PACKAGE_INSTALL".equals(action)) {
//不会生效
System.out.println("应用被安装了");
}else if ("android.intent.action.PACKAGE_ADD".equals(action)) {
System.out.println("应用被安装了");
}else if ("android.intent.action.PACKAGE_REMOVED".equals(action)) {
//intent.getData:拿到包名
System.out.println("应用被卸载了"+intent.getData);
}
}
}
定义开机重启广播接收者
public class BootReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//获取广播的事件类型
String action = intent.getAction();
if ("android.intent.action.BOOT_COMPLETED".equals(action)) {
//开启mainactivity
Intent intent = new Intent(context, MainActivity.class);
//如果在广播里面开启activity要设置一个任务栈环境,Intent.FLAG_ACTIVITY_NEW_TASK相当于singleTask启动模式
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//在广播接收者里面开启activity
context.startActivity(intent);
}
}
}
本文介绍了如何在Android中配置广播接收器以监听应用的安装、卸载事件及系统开机完成事件,并展示了具体的代码实现。
385

被折叠的 条评论
为什么被折叠?



