/ / Jak pobrać numer karty SIM Android? - Android

Jak pobrać numer karty SIM Android? - Android

chcę napisać prostą aplikację na Androida, aby pobrać numer karty SIM, używam tego kodu:

TelephonyManager tMgr = (TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE);
String mPhoneNumber = tMgr.getLine1Number();

napisz kod w Fragmentie do tego bloku:

 public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);

W tej linii:

mAppContext.getSystemService(Context.TELEPHONY_SERVICE);

Dostaję błąd w tej części: mAppContext.getSystemService . Jak mogę rozwiązać ten problem? dziękuję za uwagę na mój problem.

Odpowiedzi:

2 dla odpowiedzi № 1

uzyskać kontekst Fragment używając getActivity()

TelephonyManager tMgr = (TelephonyManager)getActivity().getSystemService(Context.TELEPHONY_SERVICE);

0 dla odpowiedzi nr 2

Metoda, której używasz, jest jedyną częściąSDK, aby to zrobić, działa tylko na urządzeniach, na których numer jest przechowywany na karcie SIM, co robią tylko niektórzy operatorzy. Dla wszystkich innych przewoźników będziesz musiał poprosić użytkownika o ręczne wprowadzenie numeru telefonu, ponieważ numer nie jest po prostu przechowywany w dowolnym miejscu urządzenia, skąd można go pobrać.


0 dla odpowiedzi № 3

daje wszystkie kontakty:

Cursor cursor = contentResolver.query(ContactsContract.Contacts.CONTENT_URI, null, null, null,
null);
Cursor phoneCursor = contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
Phone_CONTACT_ID + " = ?", new String[] { contact_id },
null);
String phoneNumber = phoneCursor.getString(phoneCursor
.getColumnIndex(NUMBER));

utwórz pętlę dla kursora i uzyskaj wszystkie kontakty.


0 dla odpowiedzi nr 4

czy podałeś uprawnienie READ_PHONE_STATE w manifeście.


0 dla odpowiedzi № 5

Sprawdź AndroidManifest.xml, czy zadeklarowałeś zgodę, czy nie.

<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>

Jeśli nie, dodaj go po zmianie mAppContext do getActivity() aby uruchomić twój kod.


0 dla odpowiedzi № 6

Z pewnych powodów ten interfejs API otrzyma pusty, jeśli urządzenie nie ma obsługi przechowywania numeru karty SIM. Jeśli tak, musimy poprosić użytkownika o ręczne wprowadzenie numeru.

TelephonyManager telephonyManager = (TelephonyManager) getActivity().getSystemService(Context.TELEPHONY_SERVICE);
String phone = telephonyManager.getLine1Number();
if (phone != null && phone.isEmpty()) {
// TODO: ask the user to input his/her telephone number
}