0

I am using the Broadcast reciever in a thread but I don't know why I can't use the method registerReciever and I got this error "can't resolve methode register reciever" , so what can I do ? I am using this thread to do the scan of the bluetooth devices

package com.example.fatma.listviewcst;

import android.app.Application;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.ContextWrapper;
import android.content.Intent;
import android.content.IntentFilter;
import android.util.Log;
import android.widget.Toast;

import java.util.ArrayList;

/**
 * Created by FATMA on 06/04/2016.
 */
  class ConnectedThread extends Thread{
    ArrayList<BluetoothDevice> mArrayAdapter;
    BroadcastReceiver mReceiver;
    public ArrayList<BluetoothDevice> sendList(){
        BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
        mArrayAdapter=new ArrayList<BluetoothDevice>();
        if (bluetoothAdapter == null) {
            Toast t=null;
            t.setText("Sorry your phone do not support Bluetooth");
            t.show();
        } else {

            //   bluetoothDev=new BluetoothDev();

            //added
            // Create a BroadcastReceiver for ACTION_FOUND
            if(bluetoothAdapter.isEnabled()){
                bluetoothAdapter.startDiscovery();
               mReceiver= new BroadcastReceiver() {


                    public void onReceive(Context context, Intent intent) {
                        String action = intent.getAction();
                        // When discovery finds a device
                        if (BluetoothDevice.ACTION_FOUND.equals(action)) {
                            // Get the BluetoothDevice object from the Intent
                            BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
                            // Add the name and address to an array adapter to show in a ListView
                            mArrayAdapter.add(device);


                        }
                        for (int i=0;i<mArrayAdapter.size();i++){
                            Log.w("devv ", mArrayAdapter.get(i).getName().toString().toString());
                        }

                    }

                };
                // Register the BroadcastReceiver
            IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);

             //   ContextWrapper cw = new ContextWrapper();
       mReceiver.registerReceiver(mReceiver, filter); // Don't forget to unregister during onDestroy

                if(mArrayAdapter.size()==0)
                   Log.w("error", "not found");
                else
                {
                    Log.w("valid", " found");
                }



               }
        }
        // Register the BroadcastReceiver
      //  IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
       // registerReceiver(mReceiver, filter); // Don't forget to unregister during onDestroy
        return mArrayAdapter;

    }

    @Override
    public void run() {
        super.run();
        while(mArrayAdapter.size()==0){
            this.sendList();
        }
    }
}
Ankit Shubham
  • 2,989
  • 2
  • 36
  • 61
fatma19
  • 51
  • 1
  • 13

1 Answers1

1

registerReceiver requires a context

pass the context from the activity to your ConnectedThread class then use

context.registerReceiver(mReceiver, filter);
dione llorera
  • 357
  • 4
  • 14