Automatische Aktivierung von Bluetooth funktioniert leider nicht

S

Speedy1985

Neues Mitglied
0
Hallo zusammen,

ich versuche gerade, Bluetooth in meine App einzubinden.:winki:

Dazu habe ich schon die Permissions für BLUETOOTH und BLUETOOTH_ADMIN gesetzt.:laugh:

Meine App soll zunächst prüfen, ob Bluetooth überhaupt auf dem Gerät zur Verfügung steht und wenn ja, Bluetooth aktivieren, falls es ausgeschaltet ist. Der Ansatz nach developer.android.com:

Code:
 BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
        if(mBluetoothAdapter == null){
            new AlertDialog.Builder(this).setTitle("Fehler").setMessage("Das Gerät unterstützt kein Bluetooth").setPositiveButton(android.R.string.ok,null).show();
        }
        if (!mBluetoothAdapter.isEnabled()){
            Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
            startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
        }
Woher die REQUEST_ENABLE_BT kommen soll, weiß ich nicht. Android Studio melde hier "cannot resolve Symbol".

Ich habe stattdessen 0 und 1 schon probiert, da ich diese Varianten auch schon gesehen hab.

Mein Problem ist, aber eigentlich, dass bei der if-Abfrage "!mBluetoothAdapter.isEnabled()" die App abstürzt, ohne einen Fehler ins LogCat zu schreiben.

Vielleicht ist es ja für einen von euch offensichtlich, was ich hier übersehen habe.

Würd mich über Tipps sehr freuen. :biggrin:

Gruß,
Christian
 
hi versuch das wo du es vermutest in einem try catch statement zu hüllen und fang es ab evtl. kannst du ausnahmsweise mal das Throwable dazu verwenden.

Permissions wurden gesetzt?

ACTION_REQUEST_ENABLE hast du auch global definiert am besten als private final static int REQUEST_ENABLE_BT = 1;
 
Zuletzt bearbeitet:
Vermutung: mBluetoothAdapter ist null - aber das müsste im Logcat stehen.
Da müsste wohl noch ein "else" vor das if(mBluetoothAdapter.isEnabled())

Versuchst du das auf dem Emulator oder Device?
 
ja das fängt er ja doch ab mit einem alertdialog...den er aber anscheinend nicht bekommen aht also gibt es auch bluetooth

ich hab kurz was gelesen irgendwann mal dass ab jellybean man irgendwas mit systemservice oder so benutzen sollte..k.A ob es vllt daran liegen könnte aber getAdapter scheint weder depricated ncoh als nichtunterstützt angegeben zu sein
 
Ja und dann? Die Methode läuft doch dann normal weiter.

Der Dialog wird beendet und dann läuft er doch ins nächste if(mBluetoothAdapter.isEnabled) ... und hier ist die Instanz noch immer null.
 
ähm ja das ist klar ich gehe nur von seiner aussage aus...
da er es ja getestet hat und ncihts davon erwähnt hat dass der alert dialog kommt gehe ich davon aus das er bluetooth hat !
 
Ich wette auf ein "Gleichzeitigkeits"-Problem. Der Dialog würde erscheinen, aber er blockiert die weitere Ausführung nicht - ist also nicht modal! Daher geht das nächste If schief und die App "stürzt" ab, noch bevor der Dialog dargestellt wird.
 
mmmmh da können wir wohl nur auf seine antwort warten ansonsten sind das wohl alles ratespiele von uns beiden

obwohl wie du auch schon erwähnt hast eine nullpointerex geschmissen werden müsste....bleibt also nur abwarten auf seine antwort
 
Hallo zusammen,

Dankeschön für die vielen Posts.

Mal der Reihe nach:

@ Jaiel: Die Permissions BLUETOOTH sowie BLUETOOTH_ADMIN wurden gesetzt, so wie im ersten Post beschrieben.

@Thyrion: Der Adapter ist nicht null, da die Abfrage if(mBluetoothAdapter == null) nicht true wird, was logisch ist, denn das Handy (kein Emulator) besitzt Bluetooth. Demnach erhalte ich auch keinen Warndialog. Du hast Recht, ich brauch anschließend natürlich ein else if, da sonst die Abfrage eine NullpointerException werfen würde auf einem Device ohne Bluetooth-Modul.

Werde nachher nochmal auf Nummer sicher gehen, aber nachdem der Dialog nicht erscheinen sollte, sehe ich auch kein Gleichzeitigkeitsproblem.

Werde berichten.

Gruß,
Christian

Der ursprüngliche Beitrag von 21:50 Uhr wurde um 22:35 Uhr ergänzt:

So, ich bin's wieder.

also, mBluetoothAdapter wird erfolgreich initialisiert, ist also nicht null.:thumbsup:

Jetzt hab ich grad was gesehen...
In Android Studio (damit arbeite ich), gibt es im Debugmodus die Funktion "Evaluate Expression". Wenn ich also den Ausdruck "mBluetoothAdapter.isEnabled()" markiere und den Befehl ausführe, zeigt es mir an, dass es ein Problem mit den Permissions gibt.:confused2:

Also ich ab in die Manifest und nachgeschaut... und tatsächlich :thumbup: - ich könnt mich selber ohrfeigen - hab ich bei der BLUETOOTH-Permission folgendes geschrieben:

Code:
 <uses-Permission android:name="android.permission.BLUETOOTH" />
Wo liegt der Fehler? Hat ihn schon jemand gefunden?...
Permission muss natürlich klein geschrieben werden. oh man... :scared:

Deshalb auch keine NullpointerException. Aber auch keine Permission-Fehlermeldung leider. Ich weiß nicht, ob mir Eclipse hier mehr erzählt hätte?

Ich bin eig. sehr zufrieden mit Android Studio (Version 1.1.0)

Trotzdem vielen Dank nochmal an alle, die so fleißig mitgerätselt haben und sorry für meine hausgemachten Problemstellungen...

Gruß,
Christian
 
so wie ich es mir dachte....die permission prüft eclipse nie
 
Ja also Eclipse selbst prüft nie auf Permisisons. Aber wenn die App abstürzt, sollte das Logcat trotzdem einen Error bringen mit dem Hinweis auf die fehlende Permission. Zumindest war das bei mir bisher immer der Fall (bin jetzt aber auch auf Android Studio umgestiegen).

Edit: Gerade doch gefunden. So müsste es im Logcat beispielsweise ausschauen:

java.lang.RuntimeException: Unable to start activity
ComponentInfo{com.BTSender/com.BTSender.BluetoothSenderActivity}:
java.lang.SecurityException: Need BLUETOOTH permission: Neither user 10076 nor current
process has android.permission.BLUETOOTH.
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1654)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1670)
at android.app.ActivityThread.access$1500(ActivityThread.java:117)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:3695)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.SecurityException: Need BLUETOOTH permission: Neither user 10076
nor current process has android.permission.BLUETOOTH.
at android.os.Parcel.readException(Parcel.java:1322)
at android.os.Parcel.readException(Parcel.java:1276)
at android.bluetooth.IBluetooth$Stub$Proxy.isEnabled(IBluetooth.java:496)
at android.bluetooth.BluetoothAdapter.isEnabled(BluetoothAdapter.java:351)
at com.BTSender.BluetoothSenderActivity.onStart(BluetoothSenderActivity.java:51)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1129)
at android.app.Activity.performStart(Activity.java:3791)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1627)
... 11 more
java.lang.SecurityException: Need BLUETOOTH permission: Neither user 10076 nor current
process has android.permission.BLUETOOTH.
at android.os.Parcel.readException(Parcel.java:1322)
at android.os.Parcel.readException(Parcel.java:1276)
at android.bluetooth.IBluetooth$Stub$Proxy.isEnabled(IBluetooth.java:496)
at android.bluetooth.BluetoothAdapter.isEnabled(BluetoothAdapter.java:351)
at com.BTSender.BluetoothSenderActivity.onStart(BluetoothSenderActivity.java:51)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1129)
at android.app.Activity.performStart(Activity.java:3791)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1627)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1670)
at android.app.ActivityThread.access$1500(ActivityThread.java:117)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:3695)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
at dalvik.system.NativeStart.main(Native Method)
 

Ähnliche Themen

SaniMatthias
Antworten
19
Aufrufe
955
swa00
swa00
S
Antworten
4
Aufrufe
4.434
mblaster4711
mblaster4711
E
  • emergentvillage
Antworten
1
Aufrufe
912
pueh
pueh
Zurück
Oben Unten