Изменение SIM-карты Android

Можно ли определить номер SIM-карты с помощью TelephonyManager в Android при запуске загрузки, используя службу при загрузке...

TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String ss=tm.getSimSerialNumber();

person subrussn90    schedule 25.12.2011    source источник


Ответы (1)


Вам необходимо зарегистрировать широковещательный приемник для действия завершения загрузки, т.е. android.intent.action.BOOT_COMPLETED

в onReceive этого приемника вы можете запустить службу получения номера SIM-карты с приведенными ниже строками кода

  TelephonyManager telephoneMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
  String phoneNumber = telephoneMgr.getLine1Number();

Также необходимо иметь разрешение на чтение номера телефона как READ_PHONE_STATE в файле манифеста.

вы можете запустить службу с широковещательного приемника как -

 public class BootListener extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent arg1) {
    Intent intent = new Intent(context,Myservice.class);
    context.startService(intent);
}

}

person Sushil    schedule 25.12.2011
comment
Да, я пробовал это... но я не могу запустить службу... СПАСИБО за ответ, друзья.... - person subrussn90; 25.12.2011
comment
вы можете запустить службу из широковещательного приемника как общедоступный класс. контекст.startService(намерение); } } - person Sushil; 25.12.2011
comment
Один шаг, который я переслал... как уже было сказано, я смог запустить сервис при запуске... но когда я получаю номер simserial, программа вылетает... Есть идеи по этой проблеме? - person subrussn90; 25.12.2011
comment
можете ли вы подтвердить, что добавили разрешение манифеста - ‹uses-permission android:name=android.permission.READ_PHONE_STATE/›. Потому что я протестировал программу на эмуляторе, и она работает. - person Sushil; 25.12.2011
comment
Кстати, telephoneMgr.getLine1Number(); очень ненадежный метод. - person Abdul Wasae; 17.07.2017