FileDocCategorySizeDatePackage
BluetoothPinRequest.javaAPI DocAndroid 1.5 API4153Wed May 06 22:42:48 BST 2009com.android.settings.bluetooth

BluetoothPinRequest

public class BluetoothPinRequest extends android.content.BroadcastReceiver
BluetoothPinRequest is a receiver for any Bluetooth pairing PIN request. It checks if the Bluetooth Settings is currently visible and brings up the PIN entry dialog. Otherwise it puts a Notification in the status bar, which can be clicked to bring up the PIN entry dialog.

Fields Summary
public static final int
NOTIFICATION_ID
Constructors Summary
Methods Summary
public voidonReceive(android.content.Context context, android.content.Intent intent)

    
    
          
        String action = intent.getAction();
        if (action.equals(BluetoothIntent.PAIRING_REQUEST_ACTION)) {

            LocalBluetoothManager localManager = LocalBluetoothManager.getInstance(context);        
        
            String address = intent.getStringExtra(BluetoothIntent.ADDRESS);
            Intent pinIntent = new Intent();
            pinIntent.setClass(context, BluetoothPinDialog.class);
            pinIntent.putExtra(BluetoothIntent.ADDRESS, address); 
            pinIntent.setAction(BluetoothIntent.PAIRING_REQUEST_ACTION);
            pinIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            
            if (localManager.getForegroundActivity() != null) {
                // Since the BT-related activity is in the foreground, just open the dialog
                context.startActivity(pinIntent);
                
            } else {
                
                // Put up a notification that leads to the dialog
                Resources res = context.getResources();
                Notification notification = new Notification(
                        android.R.drawable.stat_sys_data_bluetooth,
                        res.getString(R.string.bluetooth_notif_ticker),
                        System.currentTimeMillis());

                PendingIntent pending = PendingIntent.getActivity(context, 0, 
                        pinIntent, PendingIntent.FLAG_ONE_SHOT);
                
                String name = intent.getStringExtra(BluetoothIntent.NAME);
                if (TextUtils.isEmpty(name)) {
                    name = localManager.getLocalDeviceManager().getName(address);
                }
                
                notification.setLatestEventInfo(context, 
                        res.getString(R.string.bluetooth_notif_title), 
                        res.getString(R.string.bluetooth_notif_message) + name, 
                        pending);
                notification.flags |= Notification.FLAG_AUTO_CANCEL;
                
                NotificationManager manager = (NotificationManager) 
                        context.getSystemService(Context.NOTIFICATION_SERVICE);
                manager.notify(NOTIFICATION_ID, notification);
            }
            
        } else if (action.equals(BluetoothIntent.PAIRING_CANCEL_ACTION)) {
            
            // Remove the notification
            NotificationManager manager = (NotificationManager) context
                    .getSystemService(Context.NOTIFICATION_SERVICE);
            manager.cancel(NOTIFICATION_ID);
        }