Kotlin onCellInfoChanged () ничего не возвращает - PullRequest
0 голосов
/ 07 февраля 2020

Я хочу создать простое приложение, которое получает информацию о ячейке, а затем извлекает из нее 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
    }
}
...