android studio kotlin - 蓝牙 "ACTION REQUEST ENABLE" 不工作
android studio kotlin - bluetooth "ACTION REQUEST ENABLE" doesn't work
启动我的程序后,点击按钮,应用程序下降。
当我尝试其他开发人员的教程时,Google,...它并没有解决问题。
我忽略了 startActivityForResult() 已被弃用,我想要求用户打开蓝牙 - 仅此而已。
问题出在 android 12.
的设备上
这是我对清单文件的许可:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
这是我来自 MainActivity.kt
的代码
package com.example.piratsilnic
import android.bluetooth.BluetoothAdapter
import android.bluetooth.BluetoothManager
import android.content.Context
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.Toast
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val BTadapter = getSystemService(Context.BLUETOOTH_SERVICE) as BluetoothManager
BTadapter.getAdapter()
var REQUEST_ENABLE_BT = 1
val sparovatButton = findViewById<Button>(R.id.sparovatButton)
sparovatButton.setOnClickListener{
if (BTadapter != null) {
if (BTadapter.adapter?.isEnabled == false) {
val enableBtIntent = Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE)
startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT)
}
if (BTadapter.adapter.isEnabled) {
Toast.makeText(this, "bluetooth on", Toast.LENGTH_LONG).show()
}
} else {
Toast.makeText(this, "Device doesnt support bluetooth", Toast.LENGTH_LONG).show()
}
}
}
}
我有点迷路了...谢谢你的帮助...
您可以使用较新的 registerForActivityResult()
要了解更多信息,developers.android.com 上有一个很好的指南:Getting a result from an activity
首先您需要注册您的回调:
val registerForResult = registerForActivityResult(
ActivityResultContracts.StartActivityForResult()
) { result ->
if (result.resultCode == Activity.RESULT_OK) {
val intent = result.data
// Handle the Intent
}
}
然后,在您的 onClickListener 中启动它。
if (BTadapter.adapter?.isEnabled == false) {
val enableBtIntent = Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE)
regiterForResult.launch(enableBtIntent)
}
启动我的程序后,点击按钮,应用程序下降。 当我尝试其他开发人员的教程时,Google,...它并没有解决问题。 我忽略了 startActivityForResult() 已被弃用,我想要求用户打开蓝牙 - 仅此而已。
问题出在 android 12.
的设备上这是我对清单文件的许可:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
这是我来自 MainActivity.kt
的代码package com.example.piratsilnic
import android.bluetooth.BluetoothAdapter
import android.bluetooth.BluetoothManager
import android.content.Context
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.Toast
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val BTadapter = getSystemService(Context.BLUETOOTH_SERVICE) as BluetoothManager
BTadapter.getAdapter()
var REQUEST_ENABLE_BT = 1
val sparovatButton = findViewById<Button>(R.id.sparovatButton)
sparovatButton.setOnClickListener{
if (BTadapter != null) {
if (BTadapter.adapter?.isEnabled == false) {
val enableBtIntent = Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE)
startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT)
}
if (BTadapter.adapter.isEnabled) {
Toast.makeText(this, "bluetooth on", Toast.LENGTH_LONG).show()
}
} else {
Toast.makeText(this, "Device doesnt support bluetooth", Toast.LENGTH_LONG).show()
}
}
}
}
我有点迷路了...谢谢你的帮助...
您可以使用较新的 registerForActivityResult()
要了解更多信息,developers.android.com 上有一个很好的指南:Getting a result from an activity
首先您需要注册您的回调:
val registerForResult = registerForActivityResult(
ActivityResultContracts.StartActivityForResult()
) { result ->
if (result.resultCode == Activity.RESULT_OK) {
val intent = result.data
// Handle the Intent
}
}
然后,在您的 onClickListener 中启动它。
if (BTadapter.adapter?.isEnabled == false) {
val enableBtIntent = Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE)
regiterForResult.launch(enableBtIntent)
}