altosdroid: Add BLUETOOTH_CONNECT permission, handle its lack
[fw/altos] / altosdroid / app / src / main / java / org / altusmetrum / AltosDroid / DeviceListActivity.java
index 1c3e1dbab21019bd9bfa82423e820a2129720c00..a3aef896c1f4718be190509239959c715e02d056 100644 (file)
@@ -105,10 +105,11 @@ public class DeviceListActivity extends Activity {
                // If there are paired devices, add each one to the ArrayAdapter
                if (pairedDevices.size() > 0) {
                        findViewById(R.id.title_paired_devices).setVisibility(View.VISIBLE);
-                       for (BluetoothDevice device : pairedDevices)
-                               if (device.getName().startsWith("TeleBT"))
-                                       mPairedDevicesArrayAdapter.add(device.getName() + "\n" + device.getAddress());
-
+                       for (BluetoothDevice device : pairedDevices) {
+                               String name = device.getName();
+                               if (name != null && name.startsWith("TeleBT"))
+                                       mPairedDevicesArrayAdapter.add(name + "\n" + device.getAddress());
+                       }
                } else {
                        String noDevices = getResources().getText(R.string.none_paired).toString();
                        mPairedDevicesArrayAdapter.add(noDevices);
@@ -152,11 +153,16 @@ public class DeviceListActivity extends Activity {
        // The on-click listener for all devices in the ListViews
        private OnItemClickListener mDeviceClickListener = new OnItemClickListener() {
                public void onItemClick(AdapterView<?> av, View v, int arg2, long arg3) {
+                       // Get the device MAC address, which is the last 17 chars in the View
+                       String info = ((TextView) v).getText().toString();
+
+                       /* Ignore clicks on items that are too short */
+                       if (info.length() <= 17)
+                               return;
+
                        // Cancel discovery because it's costly and we're about to connect
                        mBtAdapter.cancelDiscovery();
 
-                       // Get the device MAC address, which is the last 17 chars in the View
-                       String info = ((TextView) v).getText().toString();
                        String address = info.substring(info.length() - 17);
 
                        int newline = info.indexOf('\n');
@@ -200,7 +206,7 @@ public class DeviceListActivity extends Activity {
                                {
                                        String  name = device.getName();
                                        if (name != null && name.startsWith("TeleBT"))
-                                               mNewDevicesArrayAdapter.add(device.getName() + "\n" + device.getAddress());
+                                               mNewDevicesArrayAdapter.add(name + "\n" + device.getAddress());
                                }
 
                        /* When discovery is finished, change the Activity title