The public API is not supposed to require the BACKUP permission in order
for an application to restore its own last-known-good backup data. However,
as currently implemented, BackupManager.requestRestore() [the public API
in question] depends on private Backup Manager methods that *do* enforce
that permission. The net result is that the method cannot be successfully
used by third party applications: it will throw an exception if attempted.
This CL restructures the permission checking involved.
First, the underlying beginRestoreSession() operation can now be passed a
'null' transport name; if this is done, then the restore session is begun
on whatever the currently-active transport is. Looking up the name of the
active transport is one of the permission-guarded actions that was required
with the initial implementation.
Second, a package name can now be passed to beginRestoreSession(). If
this is done, then the restore session can only be used to perform a
single-package restore of that one application. The BACKUP permission is
not required if the caller is tying the restore to its own package name.
In combination, these changes permit BackupManager.requestRestore() to
function without the calling app needing to hold any special permission.
The no-permission case is intentionally quite narrow: the caller must
hold the permission unless they both (a) pass 'null' for the transport
name, thereby accepting whatever the currently active transport is, and
(b) pass their own package name to restrict the restore session only
to their own app.
External bug http://code.google.com/p/android/issues/detail?id=10094
Internal bug 3197202
Change-Id: Ibc9d652323f2da03727d850f991b4096af6520d2
The animation movie disappears due to the incorrect logic of
commit c11f46259a1e8f4e7e58925aefd1ed9eaf57a7fc.
Change-Id: I9c0eac2bf2950fe20e931da367036ddf38d81f52
Properly guard against a null set of available restore sets when
validating the token passed to 'bmgr restore TOKEN' against what's
known to exist on the backend.
Fixes bug 3153986
Change-Id: I74bdd4c6242f682833c1633baa4fefccb2b165a7
There is a 60s timeout for this command. I'd rather do it as an individual timeout
for each of the services, but this is easier and will probably cover for busted apps
well enough. Also, this is running last in dumpstate, so if it's lost... oh well.
Also, clean up the formatting of the service dump so it's more readable in bugreport.
Change-Id: Ibd727f4b3366f7af9e7ef1e231868f5cedc48132
If the library couldn't be printed to the string, installd should fail
early instead of trying to chmod() back to uninitialized stat struct.
Bug: 3121721
Change-Id: I8a3604954ae657a1e07c1ad8d5569aa80aff9e0a
Merge commit '9a430d8c0e376160f287e50cdad99177e69ec384'
* commit '9a430d8c0e376160f287e50cdad99177e69ec384':
allow dumpstate to work for non-root users.
Merge commit '62d0970c82f9a2c17aea67379c207a3f17556c46' into gingerbread-plus-aosp
* commit '62d0970c82f9a2c17aea67379c207a3f17556c46':
allow dumpstate to work for non-root users.
Add missing NOTICE block for TagSoup in general NOTICE file.
Add comment in Android.mk to help reviewers locate the NOTICE for apache-http.
Modify build rule for 'am' command to pull in the NOTICE file.
Change-Id: I43c6c1468395b70d0942b3620f12e4b6f3d9a66b
NFC service is now an application service in packages/apps/Nfc.
NFC service is registered through ServiceManager.addService(), and the proxy
object NfcAdapter obtains a handle to it through ServiceManager.getService().
**Important** Had to add new symbols AID_NFC / NFC_UID / android.uid.nfc and
modify service_manager.c, Process.java and PackageManagerService.java in order
to force the com.android.nfc process to take a fixed uid, so that it can use
ServiceManager.addService().
Most of the JNI has moved to packages/apps/Nfc/jni. However NdefRecord and
NdefMessage require some in-process native code, so android_com_NdefMessage.cpp
and android_com_NdefRecord.cpp stay in frameworks/base/core/jni. They link to
a very small library libnfc_ndef.so that implements NDEF message parsing. This
has been added to core.mk so all devices (even without NFC hardware) can work
with NDEF data.
Bug: 3041259
Bug: 3097445
Change-Id: If7f00cd8f2053acfc9319ca366d4a9c02bd396e6
Signed-off-by: Nick Pelly <npelly@google.com>
Merge commit 'b04f356d86eec74217fca8e3b85d801c4fcaa678' into gingerbread-plus-aosp
* commit 'b04f356d86eec74217fca8e3b85d801c4fcaa678':
Include the framework copy of the OpenMAX headers instead of referencing external/opencore.
NFC service is now an application service in packages/apps/Nfc.
NFC service is registered through ServiceManager.addService(), and the proxy
object NfcAdapter obtains a handle to it through ServiceManager.getService().
**Important** Had to add new symbols AID_NFC / NFC_UID / android.uid.nfc and
modify service_manager.c, Process.java and PackageManagerService.java in order
to force the com.android.nfc process to take a fixed uid, so that it can use
ServiceManager.addService().
Most of the JNI has moved to packages/apps/Nfc/jni. However NdefRecord and
NdefMessage require some in-process native code, so android_com_NdefMessage.cpp
and android_com_NdefRecord.cpp stay in frameworks/base/core/jni. They link to
a very small library libnfc_ndef.so that implements NDEF message parsing. This
has been added to core.mk so all devices (even without NFC hardware) can work
with NDEF data.
Bug: 3041259
Bug: 3097445
Change-Id: If8f00ce8f2053acfc9319ca366d4a9c02bd396e6
Signed-off-by: Nick Pelly <npelly@google.com>
This will help legacy games that use dlopen() to directly access the
/data/data/<app>/lib directory before the
ApplicationInfo.nativeLibraryDir was part of the API.
Change-Id: Ie9f3e7239b6334708b5d086ffafe66a507f6d9da
Since LOG_ALWAYS_FATAL is always fatal and code after it is by
definition unreachable, put the call after other diagnostic output.
Change-Id: Ib3a515a04125d8e4f6e8af3a6f59226e8f0dd9cd
the core screenshot function now can capture the screen at any lower resolution
performing bilinear filtering.
we also now have some client code to interface with the screenshot service.
it's now possible to request a screenshot at a lower resolution.
Change-Id: I33689bba98507ab928d0898b21596d0d2fe4b953
this captures the framebuffer via surfaceflinger APIs and outputs
it to stdout. this is intended to be used by adbd.
Change-Id: I057e331d28dd92bd45a2c7037ab93e220bbd65f3
Merge commit '797bb4f83dfcaf263c72b760dfa279e3fbb8d545'
* commit '797bb4f83dfcaf263c72b760dfa279e3fbb8d545':
Fix bug #3055578 ("adb shell bmgr list sets" generates NPE and cannot be run again when device has no account setup)
Merge commit '73db5f02a1e1a3fc3514ddbff1c28e22fec3aa7a' into gingerbread-plus-aosp
* commit '73db5f02a1e1a3fc3514ddbff1c28e22fec3aa7a':
Fix bug #3055578 ("adb shell bmgr list sets" generates NPE and cannot be run again when device has no account setup)
Merge commit '92cb1a026a2d6c594a63c18d8906271147eed85b'
* commit '92cb1a026a2d6c594a63c18d8906271147eed85b':
KeyStore: Fix the return value when send() or recv() has an error.
To improve the security, the parameters to generate the master key has
been changed. Special cares has been taken to prevent from permanent
damages of the existing data during the transition process.
Change-Id: I0c93f3de28a9fcd314932675ccfb65a7f11fa3ff