When the AppWidgetService sends APPWIDGET_DELETED
broadcasts, it only sends a single APPWIDGET_ID extra. This
change fixes the Provider to handle this extra correctly.
Fixes http://b/issue?id=1800738
Install an observer for the Location system setting and
move the Gears permission check to a slightly earlier time.
Move the logic into a separate manager class.
Also delete some whitespace and fix some style issues.
android.app.SearchManager implements
DialogInterface.OnDismissListener and DialogInterface.OnCancelListener
and thus exposes the methods onCancel(DialogInterface dialog) and
onDismiss(DialogInterface dialog). This was used by the SearchManager
to register itself as a listener on the search dialog, but is no
longer used.
This was an implementation detail that leaked into the public
API. Removing them would change the API, so they are deprecated instead.
Fixes http://b/issue?id=1962203
* changes:
Check if a searchable is null before adding it to the list of searchables for web search. If getActivityMetaData returned null for a web search searchable, previously, this null would get added to the list of searchables for web search, which was causing GlobalSearch's SearchSettings to crash with an NPE (which I've guarded against in change 6602).
Restore runs during the SetupWizard, before the phone is usable per se, so we
want to avoid presenting the usual "Application whatever has crashed..." dialog
to the user in the middle of that process. This change modifies the exception
handling around agent bringup so that agent-originated exceptions are caught and
a null agent binder reported to the backup manager.
There are three points during this code sequence at which an exception can be
thrown due to application-code error:
+ the app's manifest can name a nonexistent or malformed BackupAgent class,
incurring a VM-level exception like ClassNotFound or BadCast.
- the agent's onCreate() method could crash/throw.
- the agent's onBind() method could crash/throw.
The new code arrangement here puts a try/catch around all of these possible
failure points. When the code is invoked for backup, any caught exception is
merely rethrown. During restore, however, execution is allowed to proceed
through reporting the app's agent binder back to the activity manager. If any
exception was thrown, this reported binder will be null, i.e. a clean failure
notification to the backup manager.
What this code does *not* do at present is tear down the app when an exception
has been thrown. This is happens if the exception is allowed to propagate.
Doing so cleanly is problematic, however, in circumstances where mutiple apps
and agents share a process. Leaving the background process around until it is
torn down by the usual policies is probably the safer course at present.
for web search. If getActivityMetaData returned null for a web search
searchable, previously, this null would get added to the list of searchables
for web search, which was causing GlobalSearch's SearchSettings to crash
with an NPE (which I've guarded against in change 6602).
Active scans will only happen if a hidden AP is in use, or if the new method
WifiManager.startScanActive() is called.
This fixes some audio playback problems with bluetooth A2DP.
Signed-off-by: Mike Lockwood <lockwood@android.com>
Optimize backups by writing an entity only if the checksum of the data has changed.
Call into the hidden AudioService API to apply changed audio settings.
After restoring wifi data, make sure that the permissions and ownership are set
properly for the supplicant process to access it.
Locale isn't restoring properly - TODO added.
Setting to persist.adb.notify to 0 will disable the ad notification.
You need to be root to set this, so this allows disabling the notification
only on eng and userdebug builds.
Signed-off-by: Mike Lockwood <lockwood@android.com>
We support a ColorStateList reference now as a valid font color value
in the given html and manage html strings for all supported states
which we dynamically set while drawing the items.
This will get checked in along with changes to GlobalSearch,
EnhancedGoogleSearchProvider and Browser to make them use the new
model.
Bug: http://b/issue?id=1865037
The cause is very likely that the WaveGenerator *lpWaveGen returned by lpToneGen->mWaveGens.valueFor(lFrequency) just before calling lpWaveGen->getSamples(lpOut, lGenSmp, lWaveCmd) is invalid. The frequency lFrequency is not part of the frequencies in mWaveGens.
This can happen if a different tone is started while the callback function is active: The state is changed to TONE_RESTARTING and the call to prepareWave() at line 1226 will change the tone descriptor pointed to by mpToneDesc as well as the content of mWaveGens. However, mpToneDesc was cached in a local variable lpToneDesc when entering the callback and is not reloaded when exiting prepareWave(). This causes a mismatch between the tone frequencies listed in lpToneDesc and the frequencies present in mWaveGens.
This regression was introduced in change 973 when mpToneDesc was cached in a local variable.
* changes:
Move ExifInterface to android.media package so we can reference it from MediaScanner. Also hide public constructor and wrap common use cases as atomic operation to avoid race condition in jhead native codes.
* changes:
Add useful functions to String8, which enables users to convert between UTF-8 and UTF-32 It will be used in SQL functions in external/sqlite/android. See https://android-git.corp.google.com/g/Gerrit#change,5511 for example.