我想檢測用戶何時安裝或刪除應用程序,並且我沒有找到執行此操作的BroadcastReceiver
。如何檢測Android設備中的新應用程序
在我的應用程序中,我收到了關於類PackageManager
的已安裝應用程序的信息,但我不想定期掃描這些應用程序。有沒有這樣的BroadcastReceiver
?或者任何ContentObserver
?是否有可能獲得已安裝或刪除應用程序的通知?
我想檢測用戶何時安裝或刪除應用程序,並且我沒有找到執行此操作的BroadcastReceiver
。如何檢測Android設備中的新應用程序
在我的應用程序中,我收到了關於類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 2012-07-14 23:13:45
不,你可以從這裏檢查:http://developer.android.com/reference/android/content/Intent.html#ACTION_PACKAGE_ADDED – trante 2013-11-12 20:02:03
謝謝我正在尋找'getEncodedSchemeSpecificPart'我原以爲它是getHost我需要,但//在uri中缺少//破壞了... – schwiz 2014-03-07 17:52:17
我相信答案是_no_ ... – 2012-07-14 22:20:42
看來我錯了,:-),我忘了那一個! – 2012-07-14 22:27:19
如果你感覺雄心勃勃,你應該看看'AsyncTaskLoader'類...在這裏實現你自己的'Loader'在我看來是一個非常好的學習體驗:P – 2012-07-14 22:30:07