package com.example.myapplication.ui.home;
import android.Manifest;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi;
import androidx.core.app.ActivityCompat;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import androidx.lifecycle.ViewModelProvider;
import com.example.myapplication.R;
import com.example.myapplication.databinding.FragmentHomeBinding;
import java.util.List;
import java.util.Set;
import pub.devrel.easypermissions.AfterPermissionGranted;
import pub.devrel.easypermissions.EasyPermissions;
@RequiresApi(api = Build.VERSION_CODES.S)
public class HomeFragment extends Fragment implements EasyPermissions.PermissionCallbacks {
private FragmentHomeBinding binding;
private static final String TAG = "MainFragment";
private static final int RC_SMS_PERM = 122;
private BluetoothAdapter mBluetoothAdapter;
String[] perms = {Manifest.permission.BLUETOOTH, Manifest.permission.BLUETOOTH_ADMIN,Manifest.permission.BLUETOOTH_CONNECT}; //一些权限用逗号隔开
public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
HomeViewModel homeViewModel =
new ViewModelProvider(this).get(HomeViewModel.class);
binding = FragmentHomeBinding.inflate(inflater, container, false);
View root = binding.getRoot();
final TextView textView = binding.textHome;
Button myButton = binding.myButton;
myButton.setOnClickListener(view -> {
Log.d(TAG, "onClick: ");
String validBluetoothAddress = "01:23:45:67:89:AB"; // 这是一个有效的 Bluetooth 地址
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
Log.d(TAG, "smsTask: validBluetoothAddress"+ validBluetoothAddress);
if (mBluetoothAdapter == null) {
CharSequence text = "没有蓝牙适配器!";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(getActivity(), text, duration);
toast.show();
}
// BluetoothAddress address = new BluetoothAddress(validBluetoothAddress);
smsTask(textView, getActivity());
});
// homeViewModel.getText().observe(getViewLifecycleOwner(), textView::setText);
return root;
}
@Override
public void onRequestPermissionsResult(int requestCode,
@NonNull String[] permissions,
@NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
// EasyPermissions handles the request result.
EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this);
}
@AfterPermissionGranted(RC_SMS_PERM)
private void smsTask(TextView textView, FragmentActivity getActivity) {
Log.d(TAG, "smsTask: 权限外部");
if (EasyPermissions.hasPermissions(requireContext(), perms)) {
// Have permission, do the thing!
try {
if (ActivityCompat.checkSelfPermission(getActivity, Manifest.permission.BLUETOOTH_CONNECT) != PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details.
}
Set<BluetoothDevice> bluetoothDevice = mBluetoothAdapter.getBondedDevices();
Log.d(TAG, bluetoothDevice.toString());
// textView.setText();
// Toast.makeText(getActivity(), "TODO: SMS things", Toast.LENGTH_LONG).show();
return;
}catch (Exception e) {
e.printStackTrace();
}
} else {
// Request one permission
EasyPermissions.requestPermissions(this, getString(R.string.rationale_sms),
RC_SMS_PERM, perms);
}
}
@Override
public void onPermissionsGranted(int requestCode, @NonNull List<String> perms) {
Log.d(TAG, "onPermissionsGranted:" + requestCode + ":" + perms.size());
}
@Override
public void onPermissionsDenied(int requestCode, @NonNull List<String> perms) {
Log.d(TAG, "onPermissionsDenied:" + requestCode + ":" + perms.size());
}
@Override
public void onDestroyView() {
super.onDestroyView();
binding = null;
}
}
自己的test代码
于 2024-02-26 17:41:27 首次发布