2

我正在尝试创建一个简单的应用程序,其中我在 MainActivity 中有一个按钮,在 PairingList 活动中有一个 ListView。我希望该按钮启用蓝牙,然后在其他活动的列表视图中列出所有配对设备。但是,在单击按钮后启用 BT 后,我会立即收到运行时异常。到目前为止,这是我的代码:

MainActivity.java

package com.gmburg.android.bluetoothservice;

import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.Set;

public class MainActivity extends AppCompatActivity {

    Button btOn;
    BluetoothAdapter btAdapter;
    int REQUEST_CODE = 1;
    Set<BluetoothDevice> paired_devices;
    String plist[];

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btOn = (Button) findViewById(R.id.btOn);

        btOn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                btAdapter = BluetoothAdapter.getDefaultAdapter();

                if (btAdapter == null) {
                    Toast.makeText(getBaseContext(), "Device has no bluetooth antenna", Toast.LENGTH_LONG).show();
                } else {
                    if (!btAdapter.isEnabled()) {
                        Intent i = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
                        startActivityForResult(i, REQUEST_CODE);
                    }

                }
            }
        });


    }

    public void onActivityResult(int requestcode, int resultcode, Intent data) {

        if (requestcode == REQUEST_CODE) {
            if (resultcode == RESULT_OK) {
                Toast.makeText(getBaseContext(), "Bluetooth enabled", Toast.LENGTH_LONG).show();
                paired_devices = btAdapter.getBondedDevices();
                int count = paired_devices.size();
                plist = new String[count];
                int j = 0;
                for(BluetoothDevice device : paired_devices){
                    plist[j] = device.getName();
                    j++;
                    }
                 }
                Bundle btOn = new Bundle();
                btOn.putStringArray("paires", plist);
                Intent in = new Intent("pair_filter");
                in.putExtras(btOn);
                startActivity(in);

            }
        }
    }

配对列表.java

    package com.gmburg.android.bluetoothservice;


import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class PairingList extends Activity {
    ListView lview;
    String[] pairs;
    ArrayAdapter<String> adapter;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.pairinglist_layout);
        lview = (ListView) findViewById(R.id.listviewid);
        Bundle btOn = getIntent().getExtras();
        pairs = btOn.getStringArray("pairs");

        adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, pairs);
        lview.setAdapter(adapter);
    }
}

记录器给了我这个:

    java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=null} to activity {com.gmburg.android.bluetoothservice/com.gmburg.android.bluetoothservice.MainActivity}: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=pair_filter (has extras) }

感谢所有帮助!

4

1 回答 1

0

你得到以下错误

android.content.ActivityNotFoundException: No Activity found to handle Intent { act=pair_filter (has extras) 

这是因为您尝试为其启动活动的意图不是由手机中的任何可用活动/应用程序处理的。尝试 resolveActivity 方法以查找是否有任何活动能够处理此问题,然后仅从startActivity/ForResult您的应用程序调用。

resolveActivity 方法的文档

于 2016-01-14T22:16:03.490 回答