1

Ich habe alle Beispiele in Bezug auf die Registrierung eines BroadcastReceiver & alle von ihnen haben einen Empfänger registriert, ohne die BroadcastReceiver-Klasse zu erweitern. Aber ich habe den folgenden CodeWie wird ein Broadcast-Empfänger in einer Klasse registriert, die BroadcastReceiver erweitert?

package vertex2016.mvjce.edu.bluealert; 

import android.bluetooth.BluetoothAdapter; 
import android.bluetooth.BluetoothDevice; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.content.IntentFilter; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 

import java.util.UUID; 

public class SearchBLDev extends BroadcastReceiver { 

     private BluetoothAdapter BTAdapter = BluetoothAdapter.getDefaultAdapter(); 
     private ArrayAdapter BTArrayAdapter; 
     private ListView BTListView; 
     private BluetoothDevice BTD; 
     public UUID myUUID; 

     IntentFilter filter = new IntentFilter(); 


     public void discoveryStart() 
     { 
      filter.addAction(BluetoothDevice.ACTION_FOUND); 
      filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_STARTED); 
      filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED); 
      registerReceiver(SearchBLDev, filter) //PROBLEM OCCURS HERE 

     } 





     @Override 
     public void onReceive(Context context, Intent intent) 
     { 


     } 
    } 

Ich kann einen Empfänger mit dem RegisterReceiver-Methode registrieren. Es zeigt einen Fehler an.

Vielen Dank für Ihre Zeit !!

+0

wie registrieren Sie, dass den Fehler verursacht? Und was ist der Fehler? – SQLiteNoob

+0

Haben Sie versucht, tun 'registerReceiver (diese, Filter)'? –

+0

@SQLiteNoob es zeigt einen Fehler „Die Methode kann nicht lösen“ – Auro

Antwort

1

Sie benötigen einen Kontext zum Aufruf registerReceiver(this, filter), also sollten Sie es als Parameter übergeben.

public void discoveryStart(Context context) 
{ 
    filter.addAction(BluetoothDevice.ACTION_FOUND); 
    filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_STARTED); 
    filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED); 
    context.registerReceiver(this, filter) //PROBLEM OCCURS HERE 
} 

Dann können Sie es von Ihrem Activity nennen:

SearchBLDev broadcastReceiver = new SearchBLDev(); 
broadcastReceiver.discoveryStart(this); 
0

Haben Sie versucht, den Empfänger zu Ihrem Manifest hinzuzufügen? Wo initialisierst du diesen broadcastReceiver?

+0

I Ich habe das noch nicht probiert, aber ich bin eher geneigt, es programmatisch umzusetzen – Auro