서비스에 블루투스 브로드 캐스트 리시버 메소드를 호출 할 수 없습니다내가이 서비스 클래스가
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());
}
}
}
};
}
그리고 내 활동 수업을, 나는이 있습니다
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);
}
}
브로드 캐스트 리시버 방법 (bluetoothReceiver) Service 클래스에서 호출되지 않습니다. 나는 이유를 모른다. 무엇보다도 IntentFilter와 BroadcastReceiver 코드가 하나의 액티비티에 있으면 작동하지만 - [별도의] 서비스에는 없습니다. 나는 혼란 스럽다.
내의 AndroidManifest.xml은 다음과 같습니다
<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>
은 내가 최선을하지 않을 수 있습니다 뭘하는지 너무 안드로이드에 새로운 해요. 누군가 나를 도울 수 있기를 바랍니다.
당신이 AndroidManifest.xml에 블루투스 권한을 부여했다? – Lucifer
예, AndroidManifest.xml에 다음 권한이 있습니다. –
ChuongPham
Manifest의 수신기와 @ 루시퍼 (Lusifer)는 허가를 받았다고 말했습니까 ?? 심지어 내가 할 수 있다고 생각 TextView tvStatus = (TextView) mActivity.findViewById (R.id.tvtatus); UR 수신기에 ..? – AAnkit