java.lang.RuntimeException:将结果ResultInfo {who = null,request = 1,result = -1,data = Intent {(has extras)}}传递给活动失败

时间:2016-04-05 09:37:41

标签: java android bluetooth runtimeexception

我正在尝试制作一个蓝牙应用程序,我正在关注developer.android的“指南”,但每当我尝试getRemoteDevice我的应用程序崩溃。有些事情肯定是错的,但我无法弄清楚是什么。

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

我的赌注是,设备无法以某种方式发送给TribotActivity。 这是我的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) 

1 个答案:

答案 0 :(得分:1)

我无法看到mBluetoothAdapter的声明在哪里,但根据异常堆栈它似乎是null,所以它试图在null对象上调用方法getRemoteDevice()。