void CSearchManagerService::MyPackageMonitor::UpdateSearchables() { Int32 changingUserId; GetChangingUserId(&changingUserId); { // Update list of searchable activities AutoLock lock(mHost->mLock); Iterator it = mHost->mSearchables.Begin(); for(; it != mHost->mSearchables.End(); it++) { if(changingUserId == it->mFirst) { AutoPtr<ISearchables> searchable; mHost->GetSearchables(it->mFirst, (ISearchables**)&searchable); searchable->BuildSearchableList(); break; } } } // Inform all listeners that the list of searchables has been updated. AutoPtr<IIntent> intent; CIntent::New(ISearchManager::INTENT_ACTION_SEARCHABLES_CHANGED, (IIntent**)&intent); intent->AddFlags(IIntent::FLAG_RECEIVER_REPLACE_PENDING | IIntent::FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT); AutoPtr<IUserHandle> handler; CUserHandle::New(changingUserId,(IUserHandle**)&handler); mHost->mContext->SendBroadcastAsUser(intent, handler); }
ECode CRecognitionManagerService::MyPackageMonitor::OnSomePackagesChanged() { Int32 userHandle; GetChangingUserId(&userHandle); if (CRecognitionManagerService::DEBUG) { Slogger::I(TAG, "onSomePackagesChanged user=%d", userHandle); } AutoPtr<IComponentName> componentName; FAIL_RETURN(mOwner->GetCurRecognizer(userHandle, (IComponentName**)&componentName)); if (NULL == componentName) { Boolean result; AnyPackagesAppearing(&result); if (result) { FAIL_RETURN(mOwner->FindAvailRecognizer(String(NULL), userHandle, (IComponentName**)&componentName)); if (NULL != componentName) { FAIL_RETURN(mOwner->SetCurRecognizer(componentName, userHandle)); } } } return NOERROR; }