Problèmes avec android bluetooth autorisations

Tout d'abord, désolé pour mon mauvais anglais, je suis espagnol (Et nouvelle pour android en développement). Je suis en train d'élaborer un simple Bluetooth expéditeur du fichier, je suis en se basant sur les BluetoothChat android exemple étape par étape.

Maintenant, j'ai un bluetooth activer la demande de l'utilisateur, sélectionnez l'option oui ou non l'application se bloque.

J'ai les autorisations déclaré dans le Manifeste.

La chose est, si l'utilisateur sélectionnez oui pour activer bluetooth, bluetooth réellement active mais l'application se bloque toujours après.

Je ne sais pas si l'ACRA est en conflit avec cela, je l'utilise parce que mi dispositif est huawei u8650 et je ne trouve pas les pilotes usb pour exécuter application directement dans l'appareil à partir d'eclipse, j'ai donc déplacer l' .apk fichier à chaque fois vers la carte SD.

Voici le manifeste:

<?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>

et ici, c'est le principal ( et unique ) de l'activité:

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();
}
}
}
}

J'ai lu les réponses dans Stackoverflow récemment et c'est ma première question.
J'aimerais avoir des réponses. Également des conseils sur l'amélioration de mon développement. Merci à l'avance!

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 ça aide. Lors de l'installation de l'application, elle dit les trois autorisations, internet, bluetooth et bluetooth_admin, et il fonctionne BluetoothAdapter.getDefaultAdapter(); sans problèmes, même s'il exécute l'intention bluetooth demande, mais c'est lors de la onActivityResult entre en jeu lorsque l'application se bloque, c'est que l'app ont perdu le bluetooth autorisations mais c'est étrange.

Si votre application se bloque, vous devez ajouter logcat erreur avec votre question.
Le truc, c'est que je ne suis pas le tester directement dans eclipse, parce que l'émulateur android n'a pas de prise en charge bluetooth, et je ne sais pas comment prendre le logcat d'erreur de l'appareil, je ne sais pas si la stacktrace de l'ACRA serait utile.

OriginalL'auteur J. Arenas | 2012-07-21