我希望能够检测用户何时安装或删除应用程序,但我没有找到可以完成此任务的BroadcastReceiver
。
在我的应用程序中,我使用PackageManager
类获取已安装应用程序的信息,但我不想定期扫描这些应用程序。是否有任何可以完成此任务的BroadcastReceiver
或ContentObserver
?是否可以获得有关已安装或删除应用程序的通知?
我希望能够检测用户何时安装或删除应用程序,但我没有找到可以完成此任务的BroadcastReceiver
。
在我的应用程序中,我使用PackageManager
类获取已安装应用程序的信息,但我不想定期扫描这些应用程序。是否有任何可以完成此任务的BroadcastReceiver
或ContentObserver
?是否可以获得有关已安装或删除应用程序的通知?
您可以使用Intent.ACTION_PACKAGE_ADDED
注册一个BroadcastReceiver
(如果需要,也可以使用Intent.ACTION_PACKAGE_REMOVED
和/或Intent.ACTION_PACKAGE_CHANGED
)。例如:
void registerReceiver() {
IntentFilter filter = new IntentFilter(Intent.ACTION_PACKAGE_ADDED);
filter.addAction(Intent.ACTION_PACKAGE_REMOVED);
filter.addAction(Intent.ACTION_PACKAGE_CHANGED);
filter.addDataScheme("package_name");
}
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
if (action.equals(Intent.ACTION_PACKAGE_ADDED)) {
Uri data = intent.getData();
String pkgName = data.getEncodedSchemeSpecificPart();
}
/* etc. */
}
Intent.ACTION_PACKAGE_CHANGED
与Intent.ACTION_PACKAGE_ADDED
ÂíåIntent.ACTION_PACKAGE_REMOVED
是相同的,不是吗? - Alexrs95
AsyncTaskLoader
类...在这里实现自己的Loader
会是一个非常好的学习经验,我个人认为 :P - Alex Lockwood