Я хочу создать простое приложение, которое получает информацию о ячейке, а затем извлекает из нее CID.
Прямо сейчас я тестирую методы onSignalStrengthsChanged
и onCellInfoChanged
.
Если я настрою диспетчер телефонии на прослушивание уровня сигнала, он отобразит изменения справа. Но когда я хочу отобразить raw cellInfo, он ничего не отображает, несмотря на то, что телефон постоянно подключается к различным ячейкам.
Кроме того, я регулярно получаю сообщение об ошибке при установке приложения, вероятно, из-за android.Manifest.permission.ACCESS_COARSE_LOCATION
. Когда я его удаляю, приложение устанавливается без проблем.
Что может изменить эту проблему?
Код из MainActivity.kt:
class MainActivity : AppCompatActivity() {
private inner class allStateshListener() : PhoneStateListener() {
@RequiresApi(Build.VERSION_CODES.M)
override fun onSignalStrengthsChanged(signalStrength: android.telephony.SignalStrength) {
val level = signalStrength.level
cellStrength.text = level.toString()
d("_cell_strength:", "${signalStrength.toString()}")
}
override fun onCellInfoChanged(cellInfo: MutableList<CellInfo>?) {
super.onCellInfoChanged(cellInfo)
cellInfoText.text = cellInfo.toString()
d("_cell_info", "${cellInfo.toString()}")
}
}
private var cellData: allStateshListener? = null
@RequiresApi(Build.VERSION_CODES.M)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED &&
ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED &&
ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED){
val permissions = arrayOf(
android.Manifest.permission.READ_PHONE_STATE,
android.Manifest.permission.ACCESS_FINE_LOCATION,
android.Manifest.permission.ACCESS_COARSE_LOCATION
)
ActivityCompat.requestPermissions(this, permissions, 0)
}
cellData = allStateshListener()
(getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager).listen(cellData, PhoneStateListener.LISTEN_CELL_INFO )
val tm = getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager
}
}