public class PackageReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.PACKAGE_INSTALL)) {
//START YOUR SERVICE HERE
}
}
}
或者您也可以在服务中动态注册接收器
br = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
//SHOW notification here or Start Notification Service
}
};
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(Intent.ACTION_PACKAGE_ADDED);
intentFilter.addAction(Intent.ACTION_PACKAGE_INSTALL);
intentFilter.addDataScheme("package");
registerReceiver(br, intentFilter);
2条答案
按热度按时间h22fl7wq1#
您可以注册一个
PACKAGE_INSTALL
和PACKAGE_ADDED
接收器来接收软件包安装和卸载事件,然后从广播接收器的onReceive
启动Service( i.e IntentService)
,以在添加新软件包时显示通知。在Manifest.xml中:
在PackageReceiver中:
或者您也可以在服务中动态注册接收器
oxf4rvwz2#
虽然答案已经发布,并将工作到Android 29或Android 10,但从Android 11或Android 30起,我们只需要添加
<queries>
或需要在AndroidManifest.xml文件中添加以下权限-这是因为Android 11 -https://developer.android.com/training/package-visibility中的行为更改很少