Merge "DO NOT MERGE - Updated VPNServices stat_sys icons" into gingerbread
diff --git a/core/java/android/nfc/INfcAdapter.aidl b/core/java/android/nfc/INfcAdapter.aidl
index 7743ceb..cd08e33 100644
--- a/core/java/android/nfc/INfcAdapter.aidl
+++ b/core/java/android/nfc/INfcAdapter.aidl
@@ -39,8 +39,6 @@
// NfcAdapter-class related methods
boolean isEnabled();
- NdefMessage localGet();
- void localSet(in NdefMessage message);
void openTagConnection(in Tag tag);
// Non-public methods
diff --git a/core/java/android/nfc/NfcAdapter.java b/core/java/android/nfc/NfcAdapter.java
index cf80faf..88b6ea4 100644
--- a/core/java/android/nfc/NfcAdapter.java
+++ b/core/java/android/nfc/NfcAdapter.java
@@ -301,48 +301,6 @@
}
/**
- * Set the NDEF Message that this NFC adapter should appear as to Tag
- * readers.
- * <p>
- * Any Tag reader can read the contents of the local tag when it is in
- * proximity, without any further user confirmation.
- * <p>
- * The implementation of this method must either
- * <ul>
- * <li>act as a passive tag containing this NDEF message
- * <li>provide the NDEF message on over LLCP to peer NFC adapters
- * </ul>
- * The NDEF message is preserved across reboot.
- * <p>Requires {@link android.Manifest.permission#NFC} permission.
- *
- * @param message NDEF message to make public
- * @hide
- */
- public void setLocalNdefMessage(NdefMessage message) {
- try {
- mService.localSet(message);
- } catch (RemoteException e) {
- attemptDeadServiceRecovery(e);
- }
- }
-
- /**
- * Get the NDEF Message that this adapter appears as to Tag readers.
- * <p>Requires {@link android.Manifest.permission#NFC} permission.
- *
- * @return NDEF Message that is publicly readable
- * @hide
- */
- public NdefMessage getLocalNdefMessage() {
- try {
- return mService.localGet();
- } catch (RemoteException e) {
- attemptDeadServiceRecovery(e);
- return null;
- }
- }
-
- /**
* Create a raw tag connection to the default Target
* <p>Requires {@link android.Manifest.permission#NFC} permission.
* @hide
diff --git a/packages/SystemUI/src/com/android/systemui/usb/StorageNotification.java b/packages/SystemUI/src/com/android/systemui/usb/StorageNotification.java
index 47ed7da..7dff549 100644
--- a/packages/SystemUI/src/com/android/systemui/usb/StorageNotification.java
+++ b/packages/SystemUI/src/com/android/systemui/usb/StorageNotification.java
@@ -23,6 +23,8 @@
import android.content.Intent;
import android.content.res.Resources;
import android.os.Environment;
+import android.os.Handler;
+import android.os.HandlerThread;
import android.os.storage.StorageEventListener;
import android.os.storage.StorageManager;
import android.provider.Settings;
@@ -60,6 +62,8 @@
private boolean mUmsAvailable;
private StorageManager mStorageManager;
+ private Handler mAsyncEventHandler;
+
public StorageNotification(Context context) {
mContext = context;
@@ -67,6 +71,11 @@
final boolean connected = mStorageManager.isUsbMassStorageConnected();
Slog.d(TAG, String.format( "Startup with UMS connection %s (media state %s)", mUmsAvailable,
Environment.getExternalStorageState()));
+
+ HandlerThread thr = new HandlerThread("SystemUI StorageNotification");
+ thr.start();
+ mAsyncEventHandler = new Handler(thr.getLooper());
+
onUsbMassStorageConnectionChanged(connected);
}
@@ -74,7 +83,16 @@
* @override com.android.os.storage.StorageEventListener
*/
@Override
- public void onUsbMassStorageConnectionChanged(boolean connected) {
+ public void onUsbMassStorageConnectionChanged(final boolean connected) {
+ mAsyncEventHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ onUsbMassStorageConnectionChangedAsync(connected);
+ }
+ });
+ }
+
+ private void onUsbMassStorageConnectionChangedAsync(boolean connected) {
mUmsAvailable = connected;
/*
* Even though we may have a UMS host connected, we the SD card
@@ -98,7 +116,16 @@
* @override com.android.os.storage.StorageEventListener
*/
@Override
- public void onStorageStateChanged(String path, String oldState, String newState) {
+ public void onStorageStateChanged(final String path, final String oldState, final String newState) {
+ mAsyncEventHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ onStorageStateChangedAsync(path, oldState, newState);
+ }
+ });
+ }
+
+ private void onStorageStateChangedAsync(String path, String oldState, String newState) {
Slog.i(TAG, String.format(
"Media {%s} state changed from {%s} -> {%s}", path, oldState, newState));
if (newState.equals(Environment.MEDIA_SHARED)) {