I have this Service class:
public class BluetoothService extends Service { private static Activity mActivity; @Override public IBinder onBind(Intent intent) { return null; } @Override public void onCreate() { IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED); this.registerReceiver(bluetoothReceiver, intentFilter); } @Override public void onDestroy() { if (bluetoothReceiver != null) { this.unregisterReceiver(bluetoothReceiver); } } @Override public void onStart(Intent intent, int startid) { // } @Override public int onStartCommand(Intent intent, int flags, int startId) { return START_STICKY; } public static BroadcastReceiver bluetoothReceiver = new BroadcastReceiver(){ @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(BluetoothAdapter.ACTION_STATE_CHANGED)) { final int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.ERROR); TextView tvStatus = (TextView) mActivity.findViewById(R.id.tvtatus); Messaging.appendMessage(tvStatus, Bluetooth.getDeviceState(state)); if (Bluetooth.isBluetoothEnabled()) { Messaging.appendMessage(tvStatus, Bluetooth.showMessage()); } } } }; }
And in my Activity class, I have this:
public class MainActivity extends Activity { private TextView tvStatus; private Intent intentBluetooth; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tvStatus = (TextView)findViewById(R.id.tvtatus); intentBluetooth = new Intent(this, BluetoothService.class); startService(intentBluetooth); } }
The BroadcastReceiver method (bluetoothReceiver) in the Service class is never called. I don't know why. If I have the IntentFilter and the BroadcastReceiver codes above all in an Activity, then it works - but not in a [separate] Service. I'm stumped.
My AndroidManifest.xml is:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.onegoal.androidexample" android:versionCode="1" android:versionName="1.0.0" android:installLocation="auto" android:hardwareAccelerated="true"> <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="15" /> <uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <uses-feature android:name="android.hardware.bluetooth" android:required="false" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" android:debuggable="true" > <activity android:name=".MainActivity" android:label="@string/app_name" android:theme="@android:style/Theme.NoTitleBar" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <service android:name=".BluetoothService"> </service> </application> </manifest>
I'm new to Android so what I'm doing may not be the best. Hope someone can help me.