Problemas con los permisos de Android bluetooth

En primer lugar, lo siento por mi mal Inglés, soy español (Y nuevo para Android desarrollo). Estoy desarrollando un expedidor simple del archivo de Bluetooth, estoy basando en el ejemplo del androide de BluetoothChat paso a paso.

Ahora tengo una solicitud de activación de bluetooth al usuario, y seleccione si o no la aplicación de opción se bloquea.

Tengo los permisos declarados en el Manifiesto.

La cosa es, si el usuario selecciona sí para activar el bluetooth, el bluetooth realmente se activa pero la aplicación sigue fallando después de eso.

No sé si ACRA está en conflicto con esto, lo estoy usando porque mi dispositivo es huawei u8650 y no encuentro los conductores del usb para funcionar la aplicación directamente en el dispositivo de eclipse, así que muevo el archivo de .apk cada tiempo a la tarjeta SD.

Aquí está el manifiesto:

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.BTSender" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="10" /> <uses-permission android:name="android.permission.BLUETOOTH"/> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:name="MyApplication"> <activity android:name=".BluetoothSenderActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> 

y aquí está la actividad principal (y única):

 package com.BTSender; import android.app.Activity; import android.bluetooth.BluetoothAdapter; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.widget.Toast; public class BluetoothSenderActivity extends Activity { private BluetoothAdapter BTAdapter; private String TAG = "BTSender"; private final int REQUEST_ENABLE_BT = 2; @Override public void onCreate(Bundle savedInstanceState) { // Creating window layout Log.v(TAG, "**Creating window**"); super.onCreate(savedInstanceState); setContentView(R.layout.main); Log.v(TAG, "**Window created"); // Get the bluetooth adapter BTAdapter = BluetoothAdapter.getDefaultAdapter(); // If null, that means bluetooth is not supported on the device if (BTAdapter == null) { Toast.makeText(this, R.string.BluetoothNotSupported, Toast.LENGTH_LONG).show(); finish(); return; } } @Override public void onStart() { // Check if Bluetooth is enabled, otherwise request user to enable it if (!BTAdapter.isEnabled()) { // IT NEEDS BLUETOOTH PERMISSION // Intent to enable bluetooth, it will show the enable bluetooth // dialog Intent enableIntent = new Intent( BluetoothAdapter.ACTION_REQUEST_ENABLE); // this is to get a result if bluetooth was enabled or not startActivityForResult(enableIntent, REQUEST_ENABLE_BT); // It will call onActivityResult method to determine if Bluetooth // was enabled or not } else { // Bluetooth is enabled } } // this will be called when in onStart method startActivityForResult is // executed public void onActivityResult(int requestCode, int resultCode, Intent data) { Log.v(TAG, "** onActivityResult **"); // determine from which activity switch (requestCode) { // if it was the request to enable Bluetooth: case REQUEST_ENABLE_BT: if (resultCode == Activity.RESULT_OK) { // Bluetooth is enabled now Log.v(TAG, "** Bluetooth is now enabled**"); } else { // user decided not to enable Bluetooth so exit application Log.v(TAG, "** Bluetooth is NOT enabled**"); Toast.makeText(this, R.string.BluetoothNotEnabled, Toast.LENGTH_LONG).show(); finish(); } } } } 

He leído las respuestas en Stackoverflow recientemente y esta es mi primera pregunta. Agradecería cualquier respuesta. También consejos para mejorar mi desarrollo. ¡Gracias por adelantado!

 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) 

Si ayuda. Al instalar la aplicación dice los tres permisos, internet, bluetooth y bluetooth_admin, y ejecuta BluetoothAdapter.getDefaultAdapter (); sin problemas, incluso se ejecuta la intención de la solicitud bluetooth, pero es cuando el onActivityResult entra en juego cuando la aplicación se bloquea es como la aplicación han perdido los permisos de bluetooth, pero thats es extraño.

necesitas ambos

  <uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> 

y

 <permission android:name="android.permission.BLUETOOTH" android:label="BLUETOOTH" /> <permission android:name="android.permission.BLUETOOTH_ADMIN" /> 

declaraciones en el AndroidManifest.xml

OK, he encontrado el problema, no sé por qué, pero ACRA estaba dando un mensaje equivocado porque dijo que la aplicación no tenía permisos de bluetooth y la aplicación no los tenía.

Creo un nuevo proyecto y copiar archivos, luego ACRA dijo que en el método onStart no tenía super.onStart ();

Lo agregué y arreglé el problema !.

  • ¿Por qué un permiso de GCM no se concede en Android 6?
  • Android - Flash - Permiso para permitir la red asistida por Peer
  • Negación de permisos: Acceso al servicio ComponentInfo {...} desde pid = -1
  • El usuario obtiene solicitudes de permisos que no están incluidas en el manifiesto.
  • Android.permission.CALL_PHONE para tabletas
  • Proveedor de contenido grant uri permission
  • Android openFileOutput - no hay permiso para crear almacenamiento
  • Falta el permiso de Bluetooth, pero mi aplicación no lo usa
  • GET_TASKS Permiso desactivado
  • Cómo recopilar stacktrace nativo sin un permiso de lectura READ_LOGS desde el principio?
  • ¿Por qué el comando SQLite 3 que usa la shell ADB de Android devuelve "permiso denegado"?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.