mirror of
https://github.com/mik3y/usb-serial-for-android
synced 2025-06-07 16:06:10 +00:00
manage USB permission intent
This commit is contained in:
parent
6a50595274
commit
ac1fe40793
@ -22,7 +22,11 @@
|
|||||||
package com.hoho.android.usbserial.examples;
|
package com.hoho.android.usbserial.examples;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
|
import android.app.PendingIntent;
|
||||||
|
import android.content.BroadcastReceiver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.content.IntentFilter;
|
||||||
import android.hardware.usb.UsbDevice;
|
import android.hardware.usb.UsbDevice;
|
||||||
import android.hardware.usb.UsbManager;
|
import android.hardware.usb.UsbManager;
|
||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
@ -39,6 +43,7 @@ import android.widget.ArrayAdapter;
|
|||||||
import android.widget.ListView;
|
import android.widget.ListView;
|
||||||
import android.widget.ProgressBar;
|
import android.widget.ProgressBar;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
import android.widget.Toast;
|
||||||
import android.widget.TwoLineListItem;
|
import android.widget.TwoLineListItem;
|
||||||
|
|
||||||
import com.hoho.android.usbserial.driver.UsbSerialDriver;
|
import com.hoho.android.usbserial.driver.UsbSerialDriver;
|
||||||
@ -59,12 +64,14 @@ public class DeviceListActivity extends Activity {
|
|||||||
private final String TAG = DeviceListActivity.class.getSimpleName();
|
private final String TAG = DeviceListActivity.class.getSimpleName();
|
||||||
|
|
||||||
private UsbManager mUsbManager;
|
private UsbManager mUsbManager;
|
||||||
|
private UsbSerialPort mSerialPort;
|
||||||
private ListView mListView;
|
private ListView mListView;
|
||||||
private TextView mProgressBarTitle;
|
private TextView mProgressBarTitle;
|
||||||
private ProgressBar mProgressBar;
|
private ProgressBar mProgressBar;
|
||||||
|
|
||||||
private static final int MESSAGE_REFRESH = 101;
|
private static final int MESSAGE_REFRESH = 101;
|
||||||
private static final long REFRESH_TIMEOUT_MILLIS = 5000;
|
private static final long REFRESH_TIMEOUT_MILLIS = 5000;
|
||||||
|
public static final String INTENT_ACTION_GRANT_USB = BuildConfig.APPLICATION_ID + ".GRANT_USB";
|
||||||
|
|
||||||
private final Handler mHandler = new Handler() {
|
private final Handler mHandler = new Handler() {
|
||||||
@Override
|
@Override
|
||||||
@ -81,6 +88,7 @@ public class DeviceListActivity extends Activity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
private BroadcastReceiver mUsbReceiver;
|
||||||
|
|
||||||
private List<UsbSerialPort> mEntries = new ArrayList<UsbSerialPort>();
|
private List<UsbSerialPort> mEntries = new ArrayList<UsbSerialPort>();
|
||||||
private ArrayAdapter<UsbSerialPort> mAdapter;
|
private ArrayAdapter<UsbSerialPort> mAdapter;
|
||||||
@ -89,11 +97,25 @@ public class DeviceListActivity extends Activity {
|
|||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
setContentView(R.layout.main);
|
setContentView(R.layout.main);
|
||||||
|
final Context context = this;
|
||||||
|
|
||||||
mUsbManager = (UsbManager) getSystemService(Context.USB_SERVICE);
|
mUsbManager = (UsbManager) getSystemService(Context.USB_SERVICE);
|
||||||
mListView = (ListView) findViewById(R.id.deviceList);
|
mListView = findViewById(R.id.deviceList);
|
||||||
mProgressBar = (ProgressBar) findViewById(R.id.progressBar);
|
mProgressBar = findViewById(R.id.progressBar);
|
||||||
mProgressBarTitle = (TextView) findViewById(R.id.progressBarTitle);
|
mProgressBarTitle = findViewById(R.id.progressBarTitle);
|
||||||
|
|
||||||
|
mUsbReceiver = new BroadcastReceiver() {
|
||||||
|
@Override
|
||||||
|
public void onReceive(Context context, Intent intent) {
|
||||||
|
if(intent.getAction().equals(INTENT_ACTION_GRANT_USB)) {
|
||||||
|
if (intent.getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTED, false)) {
|
||||||
|
showConsoleActivity(mSerialPort);
|
||||||
|
} else {
|
||||||
|
Toast.makeText(context, "USB permission denied", Toast.LENGTH_SHORT).show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
mAdapter = new ArrayAdapter<UsbSerialPort>(this,
|
mAdapter = new ArrayAdapter<UsbSerialPort>(this,
|
||||||
android.R.layout.simple_expandable_list_item_2, mEntries) {
|
android.R.layout.simple_expandable_list_item_2, mEntries) {
|
||||||
@ -135,8 +157,14 @@ public class DeviceListActivity extends Activity {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final UsbSerialPort port = mEntries.get(position);
|
mSerialPort = mEntries.get(position);
|
||||||
showConsoleActivity(port);
|
UsbDevice device = mSerialPort.getDriver().getDevice();
|
||||||
|
if (!mUsbManager.hasPermission(device)) {
|
||||||
|
PendingIntent usbPermissionIntent = PendingIntent.getBroadcast(context, 0, new Intent(INTENT_ACTION_GRANT_USB), 0);
|
||||||
|
mUsbManager.requestPermission(device, usbPermissionIntent);
|
||||||
|
} else {
|
||||||
|
showConsoleActivity(mSerialPort);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -145,12 +173,14 @@ public class DeviceListActivity extends Activity {
|
|||||||
protected void onResume() {
|
protected void onResume() {
|
||||||
super.onResume();
|
super.onResume();
|
||||||
mHandler.sendEmptyMessage(MESSAGE_REFRESH);
|
mHandler.sendEmptyMessage(MESSAGE_REFRESH);
|
||||||
|
registerReceiver(mUsbReceiver, new IntentFilter(INTENT_ACTION_GRANT_USB));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onPause() {
|
protected void onPause() {
|
||||||
super.onPause();
|
super.onPause();
|
||||||
mHandler.removeMessages(MESSAGE_REFRESH);
|
mHandler.removeMessages(MESSAGE_REFRESH);
|
||||||
|
unregisterReceiver(mUsbReceiver);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void refreshDeviceList() {
|
private void refreshDeviceList() {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user