2016-04-05 4 views
0

J'essaie de faire une application bluetooth et je suis le "guide" de developer.android, mais chaque fois que j'essaie de getRemoteDevice mon application se bloque. Quelque chose doit être faux, mais je n'arrive pas à comprendre quoi.java.lang.RuntimeException: Echec de la livraison du résultat ResultInfo {who = null, requête = 1, résultat = -1, data = Intent {(a des extras)}} à l'activité

TribotActivity (la classe onActivityResult)

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == REQUEST_DEVICE_ADDRESS) {  // Check which request we're responding to. When doing more requests a switch case is probably a nicer way of doing this. 
     if (resultCode == RESULT_OK) { 
      connectDevice(data, true);// Make sure the request was successful 
     } else { 
      Toast.makeText(getApplicationContext(), "Failed to get MAC address from ", Toast.LENGTH_SHORT).show(); //TODO Remove this when we've successfully sent through the address 
     } 
    } 
} 

private void connectDevice(Intent data, boolean secure) { 
    // Get the device MAC address 
    String address = data.getExtras() 
      .getString(DeviceListActivity.EXTRA_DEVICE_ADDRESS); 
    // Get the BluetoothDevice object 
    BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(address); 
    // Attempt to connect to the device 
    mConnect.connect(device, secure); 
} 

DeviceListActivity

public static String EXTRA_DEVICE_ADDRESS = "device_address"; 

private AdapterView.OnItemClickListener mDeviceClickListener = new AdapterView.OnItemClickListener() { 
    public void onItemClick(AdapterView<?> av, View v, int arg2, long arg3) { 
     // Cancel discovery because it's costly and we're about to connect 
     mBtAdapter.cancelDiscovery(); 

     // Get the device MAC address, which is the last 17 chars in the View 
     String info = ((TextView) v).getText().toString(); 
     String address = info.substring(info.length() - 17); 

     // Create the result Intent and include the MAC address 
     Intent data = new Intent(); 
     data.putExtra(EXTRA_DEVICE_ADDRESS, address); 

     // Set result and finish(=close?) this Activity 
     setResult(RESULT_OK, data); 
     finish(); 
    } 
}; 

Mon pari serait que en quelque sorte le dispositif ne reçoit pas envoyer à TribotActivity. Voici mon logcat :)

Logcat

java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { (has extras) }} to activity {com.hszuyd.noodle_.testing/com.hszuyd.noodle_.testing.TribotActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.bluetooth.BluetoothDevice android.bluetooth.BluetoothAdapter.getRemoteDevice(java.lang.String)' on a null object reference 
                      at android.app.ActivityThread.deliverResults(ActivityThread.java:3733) 
                      at android.app.ActivityThread.handleSendResult(ActivityThread.java:3776) 
                      at android.app.ActivityThread.-wrap16(ActivityThread.java) 
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1412) 
                      at android.os.Handler.dispatchMessage(Handler.java:102) 
                      at android.os.Looper.loop(Looper.java:148) 
                      at android.app.ActivityThread.main(ActivityThread.java:5461) 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
                      at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:117) 
                     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.bluetooth.BluetoothDevice android.bluetooth.BluetoothAdapter.getRemoteDevice(java.lang.String)' on a null object reference 
                      at com.hszuyd.noodle_.testing.TribotActivity.connectDevice(TribotActivity.java:93) 
                      at com.hszuyd.noodle_.testing.TribotActivity.onActivityResult(TribotActivity.java:71) 
                      at android.app.Activity.dispatchActivityResult(Activity.java:6456) 
                      at android.app.ActivityThread.deliverResults(ActivityThread.java:3729) 
                      at android.app.ActivityThread.handleSendResult(ActivityThread.java:3776)  
                      at android.app.ActivityThread.-wrap16(ActivityThread.java)  
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1412)  
                      at android.os.Handler.dispatchMessage(Handler.java:102)  
                      at android.os.Looper.loop(Looper.java:148)  
                      at android.app.ActivityThread.main(ActivityThread.java:5461)  
                      at java.lang.reflect.Method.invoke(Native Method)  
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)  
                      at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:117)  

Répondre

1

Je ne vois pas où est la déclaration de mBluetoothAdapter, mais il semble être nulle selon la pile d'exception, il tente de appeler la méthode getRemoteDevice() sur un objet nul.

+0

private BluetoothAdapter mBluetoothAdapter; dans TribotActivity – Remco1250

+0

Je pense que vous devez appeler BluetoothAdapter.getDefaultAdapter(); sur la déclaration afin de définir une valeur non nulle à mBluetoothAdapter – Wakachopo