OTG: Implement hidden activity usb detection technique
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
package org.sufficientlysecure.keychain.ui;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.PendingIntent;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.hardware.usb.UsbDevice;
|
||||
import android.hardware.usb.UsbManager;
|
||||
import android.os.Bundle;
|
||||
|
||||
import org.sufficientlysecure.keychain.Constants;
|
||||
import org.sufficientlysecure.keychain.util.Log;
|
||||
|
||||
public class UsbEventReceiverActivity extends Activity {
|
||||
public static final String ACTION_USB_PERMISSION =
|
||||
"org.sufficientlysecure.keychain.ui.USB_PERMISSION";
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
final UsbManager usbManager = (UsbManager) getSystemService(Context.USB_SERVICE);
|
||||
|
||||
Intent intent = getIntent();
|
||||
if (intent != null) {
|
||||
if (UsbManager.ACTION_USB_DEVICE_ATTACHED.equals(intent.getAction())) {
|
||||
UsbDevice usbDevice = intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
|
||||
|
||||
Log.d(Constants.TAG, "Requesting permission for " + usbDevice.getDeviceName());
|
||||
usbManager.requestPermission(usbDevice,
|
||||
PendingIntent.getBroadcast(this, 0, new Intent(ACTION_USB_PERMISSION), 0));
|
||||
}
|
||||
}
|
||||
|
||||
// Close the activity
|
||||
finish();
|
||||
}
|
||||
}
|
||||
@@ -254,9 +254,7 @@ public abstract class BaseSecurityTokenNfcActivity extends BaseActivity
|
||||
*/
|
||||
@Override
|
||||
public void onNewIntent(final Intent intent) {
|
||||
if (!mTagDispatcher.interceptIntent(intent)) {
|
||||
mUsbDispatcher.interceptIntent(intent);
|
||||
}
|
||||
mTagDispatcher.interceptIntent(intent);
|
||||
}
|
||||
|
||||
private void handleNfcError(IOException e) {
|
||||
@@ -374,7 +372,7 @@ public abstract class BaseSecurityTokenNfcActivity extends BaseActivity
|
||||
Log.d(Constants.TAG, "BaseNfcActivity.onPause");
|
||||
|
||||
mTagDispatcher.disableExclusiveNfc();
|
||||
mUsbDispatcher.stopListeningForDevices();
|
||||
// mUsbDispatcher.stopListeningForDevices();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -385,7 +383,6 @@ public abstract class BaseSecurityTokenNfcActivity extends BaseActivity
|
||||
super.onResume();
|
||||
Log.d(Constants.TAG, "BaseNfcActivity.onResume");
|
||||
mTagDispatcher.enableExclusiveNfc();
|
||||
mUsbDispatcher.startListeningForDevices();
|
||||
}
|
||||
|
||||
protected void obtainSecurityTokenPin(RequiredInputParcel requiredInput) {
|
||||
@@ -568,8 +565,14 @@ public abstract class BaseSecurityTokenNfcActivity extends BaseActivity
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
super.onDestroy();
|
||||
mUsbDispatcher.onDestroy();
|
||||
protected void onStop() {
|
||||
super.onStop();
|
||||
mUsbDispatcher.onStop();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onStart() {
|
||||
super.onStart();
|
||||
mUsbDispatcher.onStart();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user