TelephonyManager.getCellLocation () возвращает пустой указатель?

Я нахожусь в ситуации, в которой я должен получить Местоположение т.е., Долгота и Широта через , GSMCellLocation поэтому пробует следующий путь:

  ...
  TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
  location = (GsmCellLocation) tm.getCellLocation();
  cid = location.getCid();
  lac = location.getLac();
  ...

но сбои приложения и дают мне NPE . Я проверил его, хотя Регистрации и отладка, это показывает, что getCellLocation прибыль пустой указатель следовательно я неспособен добраться cid и lac . Подпись этого метода от Докторов Google указывает этому этот путь:

Returns the current location of the device. Return null if current location is not available. 

Теперь мой вопрос, как я могу получить текущее Местоположение перед использованием этого метода, так, чтобы это не было пустым. Поскольку в моей ситуации я пытаюсь использовать это в качестве замены GPS и Сеть , чтобы получить Местоположение. Пожалуйста, обновите, и любая помощь ценится.

1
nl ja de
устройство.. Samsung S2
добавлено автор Usama Sarwar, источник
вы управляете им на эмуляторе или устройстве?
добавлено автор Calvin, источник
действительно ли возможно напечатать регистрации
добавлено автор Calvin, источник

4 ответы

Add this Permission: ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION in your manifest.xml



2
добавлено
Я проверил, все разрешения добавляются.
добавлено автор Usama Sarwar, источник
привет я опаздываю здесь, но можете вы, пожалуйста, объяснять, что является средствами той продукции как, я получил [-1,-1,0] когда, каково это
добавлено автор Bhanu Sharma, источник
я получил свой ответ.......
добавлено автор Bhanu Sharma, источник
@Bhanu Шарма сделал, чтобы вы нашли любое решение для своей проблемы, если вы нашли, позволяют мне сообщить чуваку
добавлено автор Rajaji subramanian, источник

От TelephonyManager это могло быть связано с LTE:

Если будет только одно радио в устройстве и что у радио есть связь LTE, этот метод возвратит пустой указатель...

2
добавлено

getCellLocation() возвращает пустой указатель, если текущее местоположение не available.please, Смотрят на

Telephonymanager

Дополнительно проверьте на присутствие информации о Basebandtype в ваших телефонных параметрах настройки.

Следующий Кодекс хорошо работает со мной, можно проверить это

      TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
      GsmCellLocation cellLocation = (GsmCellLocation)telephonyManager.getCellLocation();

      int cid = cellLocation.getCid();
      int lac = cellLocation.getLac();
      textGsmCellLocation.setText(cellLocation.toString());
      textCID.setText("gsm cell id: " + String.valueOf(cid));
      textLAC.setText("gsm location area code: " + String.valueOf(lac));
1
добавлено

В файле манифеста я добавил разрешения грубое, прекрасное и прочитанное телефонное государство и работал на устройстве.

    


И теперь добавьте этот код:

private void check_ReadPhoneState_Permission() {
   //Here, thisActivity is the current activity
    if (ContextCompat.checkSelfPermission(this,
            android.Manifest.permission.READ_PHONE_STATE)
            != PackageManager.PERMISSION_GRANTED) {

       //Should we show an explanation?
        if (ActivityCompat.shouldShowRequestPermissionRationale(this,
                android.Manifest.permission.READ_PHONE_STATE)) {

           //Show an explanation to the user *asynchronously* -- don't block
           //this thread waiting for the user's response! After the user
           //sees the explanation, try again to request the permission.

        } else {

           //No explanation needed, we can request the permission.

            ActivityCompat.requestPermissions(this,
                    new String[]{android.Manifest.permission.READ_PHONE_STATE},
                    MY_PERMISSIONS_REQUEST_READ_PHONE_STATE);

           //MY_PERMISSIONS_REQUEST_READ_PHONE_STATE is an
           //app-defined int constant. The callback method gets the
           //result of the request.
        }
    }
}

public boolean checkLocationPermission() {
    if (ContextCompat.checkSelfPermission(this,android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
            && ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {

       //Should we show an explanation?
        if (ActivityCompat.shouldShowRequestPermissionRationale(this,android.Manifest.permission.ACCESS_FINE_LOCATION)
                && ActivityCompat.shouldShowRequestPermissionRationale(this,android.Manifest.permission.ACCESS_COARSE_LOCATION)) {

           //Show an explanation to the user *asynchronously* -- don't block
           //this thread waiting for the user's response! After the user
           //sees the explanation, try again to request the permission.
            new AlertDialog.Builder(this)
                    .setTitle(R.string.title_location_permission)
                    .setMessage(R.string.text_location_permission)
                    .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialogInterface, int i) {
                            //Prompt the user once explanation has been shown
                            ActivityCompat.requestPermissions(PhoneDetailsMain.this,
                                    new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION},
                                    MY_PERMISSIONS_REQUEST_LOCATION);

                            ActivityCompat.requestPermissions(PhoneDetailsMain.this,
                                    new String[]{android.Manifest.permission.ACCESS_COARSE_LOCATION},
                                    MY_PERMISSIONS_REQUEST_COARSE_LOCATION);
                        }
                    })
                    .create()
                    .show();


        } else {
           //No explanation needed, we can request the permission.
            ActivityCompat.requestPermissions(this,
                    new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION},
                    MY_PERMISSIONS_REQUEST_LOCATION);
            ActivityCompat.requestPermissions(this,
                    new String[]{android.Manifest.permission.ACCESS_COARSE_LOCATION},
                    MY_PERMISSIONS_REQUEST_COARSE_LOCATION);
        }
        return false;
    } else {
        return true;
    }
}

@Override
public void onRequestPermissionsResult(int requestCode,
                                       String permissions[], int[] grantResults) {
    switch (requestCode) {
        case 100: {
           //If request is cancelled, the result arrays are empty.
            if (grantResults.length > 0
                    && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

               //permission was granted, yay! Do the
               //contacts-related task you need to do.

            } else {

               //permission denied, boo! Disable the
               //functionality that depends on this permission.
            }
        }

       //other 'case' lines to check for other
       //permissions this app might request
        case 200: {
           //If request is cancelled, the result arrays are empty.
            if (grantResults.length > 0
                    && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

               //permission was granted, yay! Do the
               //location-related task you need to do.
                if (ContextCompat.checkSelfPermission(this,
                        android.Manifest.permission.ACCESS_FINE_LOCATION)
                        == PackageManager.PERMISSION_GRANTED) {

                }

            } else {

               //permission denied, boo! Disable the
               //functionality that depends on this permission.
            }
        }
        case 300: {
            if (grantResults.length > 0
                    && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

               //permission was granted, yay! Do the
               //location-related task you need to do.
                if (ContextCompat.checkSelfPermission(this,
                        android.Manifest.permission.ACCESS_COARSE_LOCATION)
                        == PackageManager.PERMISSION_GRANTED) {

                }

            } else {

               //permission denied, boo! Disable the
               //functionality that depends on this permission.
            }
        }
    }
}
0
добавлено
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

Android Developers
Android Developers
4 476 участник(ов)

Общаемся на темы, посвященным Android-разработке, SDK, Kotlin, Realm и т.д.

Android Architecture
Android Architecture
2 186 участник(ов)

Русскоязычный чат по архитектуре в андроид приложениях. Подробнее: http://telegra.ph/Android-Architecture-12-24

rus-speaking/android
rus-speaking/android
1 705 участник(ов)

Основной чат по Android разработке (вопрос-ответ). ПРАВИЛА: bit.ly/andr-rules. NEWS: bit.ly/AnrdResId ЧАТЫ: Основной: bit.ly/andr-main IDE, сборка, Git, сервисы: bit.ly/andr-tools Оффтоп: bit.ly/andr-offtop Конференции, события: bit.ly/andr-events Вакансии, найм: bit.ly/andr-job Архитектура: bit.ly/andr-patterns Rx: bit.ly/andr-rx Тестирование: bit.ly/andr-test Kotlin: bit.ly/andr-kotlin Хаmarin: bit.ly/andr-xamarin За мат, спам, агрессию, предложения о работе, оффтоп в этом канале - бан на сутки и более ☢☢☢

Android Dev Подкаст
Android Dev Подкаст
1 325 участник(ов)

Комната для обсуждения Android Dev подкаста apptractor.ru/AndroidDev/ Общее обсуждение Android: https://t.me/android_ru Остальные чаты про Android: http://t.me/devChats Наши новости https://t.me/androiddevpodcast_news

Android Guards
Android Guards
602 участник(ов)

Обсуждение любых вопросов касающихся безопасности Android. - Защита системы и приложений - Уязвимости и эксплойты - Вредоносное ПО - Копание в кишках системы и приложений (RE)

Android JOB
Android JOB
466 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению Android (full-time, part-time, remote и разовые подработки)

AndroidDev :: Разработка. It's Android time now!
AndroidDev :: Разработка. It's Android time now!
458 участник(ов)

It's Android time now! Чат разработчиков Android. Вакансии, резюме и информацию о митапах размещать можно. Публикацию скрытой и явной рекламы ваших каналов и сайтов после получения разрешения от @olegushakov

Aandroid Talks!
Aandroid Talks!
212 участник(ов)

Чат об общих вопросах по ОС Android. Чат для разработки под андроид - pro.android: https://t.me/joinchat/AAAAAEKIFKnmRT9cMebb9w

Android Rus
Android Rus
68 участник(ов)