전화번호, 통신 국가 등 전화통신 서비스에 관한 기기 정보를 가져오는 코드입니다.
지원 중지된 서비스
스틱코드 서비스가 2022년 3월 9일 Bata 2.1 버전으로 업데이트 되면서, 기존의 ‘포스트 기능’의 지원을 임시 중단하기로 결정했습니다.
더 나은 서비스로 돌아오도록 하겠습니다.
TelephonyManager를 이용한 전화 통신 서비스에 대한 기기 정보 가져오기
-
소스 코드포스팅에 포함된 소스 코드입니다.
IDE에서 호출하여 사용 할 수 있습니다.(Java)1. MainActivity.java (현재 소스)(XML)2. activity_main.xml(XML)3. AndroidManifest.xml
-
JAVAMainActivity.java접기임포트 코드 (0 줄)임포트 코드란?
소스 코드 사용 시 필요한 import/include 코드입니다.
IDE에서 소스 코드를 호출하면 자동으로 해당 위치에 자동완성 됩니다.
예1) #include <stdio.h >
예2) import java.util.Random코드 복사x1임포트 코드가 존재하지 않습니다
소스 코드 (116 줄)포스팅에 포함된 소스 코드입니다.
IDE에서 호출하여 사용 할 수 있습니다.주석 제거코드 복사xxxxxxxxxx
11161public class MainActivity extends AppCompatActivity {
2private static final int PERMISSIONS_REQUEST_CODE = 22;
3private static final String TAG = "MainActivity";
4private boolean is_Permission = false;
5
6TextView tele_num;
7TextView tele_country;
8
910protected void onCreate(Bundle savedInstanceState) {
11super.onCreate(savedInstanceState);
12setContentView(R.layout.activity_main);
13
14tele_num = findViewById(R.id.tele_num);
15tele_country = findViewById(R.id.tele_country);
16
17
18is_Permission = chkPermission();
19Log.d(TAG,"퍼미션 체크 값은? : "+is_Permission);
20if (is_Permission) {
21Log.d(TAG,"체크 퍼미션 승인");
22// 휴대폰 정보는 TelephonyManager 를 이용
23TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
24
25
26// READ_PHONE_NUMBERS 또는 READ_PHONE_STATE 권한을 허가 받았는지 확인
27if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_NUMBERS) != PackageManager.PERMISSION_GRANTED
28&& ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
29Log.d(TAG,"넘버 스테이트 권한 확인 / 권한 실패");
30return;
31}
32
33tele_num.setText("전화번호 : "+tm.getLine1Number());
34tele_country.setText("국가 : " + tm.getNetworkCountryIso());
35
36
37Log.d(TAG, "음성통화 상태 : [ getCallState ] >>> " + tm.getCallState());
38Log.d(TAG, "데이터통신 상태 : [ getDataState ] >>> " + tm.getDataState());
39Log.d(TAG, "전화번호 : [ getLine1Number ] >>> " + tm.getLine1Number());
40Log.d(TAG, "통신사 ISO 국가코드 : [ getNetworkCountryIso ] >>> "+tm.getNetworkCountryIso());
41Log.d(TAG, "통신사 ISO 국가코드 : [ getSimCountryIso ] >>> "+tm.getSimCountryIso());
42Log.d(TAG, "망사업자 MCC+MNC : [ getNetworkOperator ] >>> "+tm.getNetworkOperator());
43Log.d(TAG, "망사업자 MCC+MNC : [ getSimOperator ] >>> "+tm.getSimOperator());
44Log.d(TAG, "망사업자명 : [ getNetworkOperatorName ] >>> "+tm.getNetworkOperatorName());
45Log.d(TAG, "망사업자명 : [ getSimOperatorName ] >>> "+tm.getSimOperatorName());
46Log.d(TAG, "SIM 카드 상태 : [ getSimState ] >>> "+tm.getSimState());
47
48// 유니크한 단말 번호 >>> Android ID 사용
49"HardwareIds") String android_id = Settings.Secure.getString(this.getContentResolver(),Settings.Secure.ANDROID_ID); (
50Log.d(TAG, "Android_ID >>> "+android_id);
51}
52
53}
54
55public boolean chkPermission() {
56// 위험 권한을 모두 승인했는지 여부
57boolean mPermissionsGranted = false;
58String[] mRequiredPermissions = new String[1];
59// 승인 받기 위한 권한 목록
60if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
61mRequiredPermissions[0] = Manifest.permission.READ_PHONE_NUMBERS;
62
63}else{
64mRequiredPermissions[0] = Manifest.permission.READ_PRECISE_PHONE_STATE;
65}
66
67
68if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
69// 필수 권한을 가지고 있는지 확인한다.
70mPermissionsGranted = hasPermissions(mRequiredPermissions);
71
72// 필수 권한 중에 한 개라도 없는 경우
73if (!mPermissionsGranted) {
74// 권한을 요청한다.
75ActivityCompat.requestPermissions(MainActivity.this, mRequiredPermissions, PERMISSIONS_REQUEST_CODE);
76}
77} else {
78mPermissionsGranted = true;
79}
80Log.d(TAG,"체크 퍼미션 끝"+mPermissionsGranted);
81
82return mPermissionsGranted;
83}
84
85
86public boolean hasPermissions(String[] permissions) {
87// 필수 권한을 가지고 있는지 확인한다.
88for (String permission : permissions) {
89if (checkCallingOrSelfPermission(permission) != PackageManager.PERMISSION_GRANTED) {
90return false;
91}
92}
93return true;
94}
95
9697public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
98super.onRequestPermissionsResult(requestCode, permissions, grantResults);
99if (requestCode == PERMISSIONS_REQUEST_CODE) {
100// 권한을 모두 승인했는지 여부
101boolean chkFlag = false;
102// 승인한 권한은 0 값, 승인 안한 권한은 -1을 값으로 가진다.
103for (int g : grantResults) {
104if (g == -1) {
105chkFlag = true;
106break;
107}
108}
109
110// 권한 중 한 개라도 승인 안 한 경우
111if (chkFlag){
112chkPermission();
113}
114}
115}
116}
호출 태그MainActivity.java
-
소스 코드포스팅에 포함된 소스 코드입니다.
IDE에서 호출하여 사용 할 수 있습니다.(Java)1. MainActivity.java (현재 소스)(XML)2. activity_main.xml(XML)3. AndroidManifest.xml

mkw
포스트 24개
구독 하기