android 如何从同一程序的第二个或第三个活动向ble设备发送数据

8ljdwjyq  于 2023-01-03  发布在  Android
关注(0)|答案(3)|浏览(94)


我可以从第一个活动发送数据,但在第二个活动上重复相同的过程以将数据发送到ble设备时,此操作不成功。如何从第二个活动发送数据?

5n0oy7gb

5n0oy7gb1#

用这个来保存

Intent intent = new Intent(FirstScreen.this, SecondScreen.class)
    intent .putExtra(strName, keyIdentifer );

用这个来得到

String newString;
if (savedInstanceState == null) {
    Bundle extras = getIntent().getExtras();
    if(extras == null) {
        newString= null;
    } else {
        newString= extras.getString("STRING_I_NEED");
    }
} else {
    newString= (String) savedInstanceState.getSerializable("STRING_I_NEED");
}
gijlo24d

gijlo24d2#

如果您只想将数据发送到下一个活动,请使用Intent intent = new Intent(FirstActivity. this,SecondActivity. class)intent. putExtra("id_for_value",值);开始活动(意图);
然后用

value= getIntent().getExtras().getString("id_for_value");//if it is a string
    • 或**

如果要将数据从第二个活动发送回前一个活动,则必须使用start activity获取结果

Intent intent=new Intent(MainActivity.this,SecondActivity.class);  
startActivityForResult(intent, 2)//where 2 is the request code
finish();

再次在第一个活动中覆盖此内容

@Override  
   protected void onActivityResult(int requestCode, int resultCode, Intent data)  
   {  
             super.onActivityResult(requestCode, resultCode, data);  
              // check if the request code is same as what is passed  here it is 2  
               if(requestCode==2)  
                     {  
                        String result=data.getStringExtra("ResultId");   

                     }  
 }

在PreviousActivity中,您可以像这样传递数据

Intent intent=new Intent();  
intent.putExtra("ResultId",message);  
setResult(2,intent);  
finish();
2cmtqfgy

2cmtqfgy3#

存储BluetoothGatt对象并在另一个Activity中重用它的一个选项是将其存储在单例类中。单例类是这样一个类,它只允许创建自身的单个示例,并提供对该示例的全局访问点。
下面是一个如何创建单例类来存储BluetoothGatt对象的示例:

public class GattManager {
private static GattManager instance;
private BluetoothGatt gatt;

private GattManager() {}

public static GattManager getInstance() {
    if (instance == null) {
        instance = new GattManager();
    }
    return instance;
}

public void setGatt(BluetoothGatt gatt) {
    this.gatt = gatt;
}

public BluetoothGatt getGatt() {
    return gatt;
} }

要存储BluetoothGatt对象,您可以在第一个Activity中使用setGatt方法:

GattManager.getInstance().setGatt(mBluetoothGatt);

要在第二个Activity中检索BluetoothGatt对象,可以使用getGatt方法:

BluetoothGatt gatt = GattManager.getInstance().getGatt();

然后可以使用gatt对象在Bluetooth设备上执行操作,例如阅读或写入特征。

相关问题