일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 제이쿼리
- 자바
- 오라클
- MYSQL
- html
- Stock
- IPO
- Oracle
- 주식
- java
- 6월 공모주 청약 일정
- 맥
- linux
- 공모주
- Eclipse
- 리눅스
- JavaScript
- 자바스크립트
- codeigniter
- css
- 공모주 청약
- jquery
- 주식 청약 일정
- Stock ipo
- 7월 공모주 청약 일정
- 주식 청약
- 코드이그나이터
- SQL
- 공모주 청약 일정
- php
- Today
- Total
개발자의 끄적끄적
[Android] 안드로이드_단말기(디바이스) 정보 가져오기(TelephonyManager ) [펌] 본문
[Android] 안드로이드_단말기(디바이스) 정보 가져오기(TelephonyManager ) [펌]
안드로이드 고유정보외에
TelephonyManager를 이용한 정보를 가져오는 방법을 알아보자.
(출처 : https://jamesdreaming.tistory.com/37)
안드로이드 단말 정보는 정말 많이 필요 하게 됩니다.
예를 들어 휴대폰번호, 통신사, IMEI, 통화 상태, 데이터 상태 등등의 값들을 필요로 하는 경우가 있습니다.
그래서 꼭 알아 두어야 하는 것중 하나 이기도 합니다.
■ 휴대폰 정보 가져오기
단말정보를 읽어 오기 위해서는 AndroidManifest.xml 에 use-permission 추가를 해야 합니다.
TelephonyManager 라는 클래스를 아래와 같이 Context.TELEPHONY_SERVICE 를 이용하여 호출합니다.
TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
이제 TelephonyManager 에서 제공하고 있는 함수들을 이용하여 원하는 데이터를 가져 오면 됩니다.
대표적으로 많이 사용하는 함수는 아래와 같습니다.
IMEI 값 조회 : tm.getDeviceId()
전화번호 조회 : tm.getLine1Number()
망사업자명 조회 : tm.getSimOperatorName()
음성통화 상태 조회 : tm.getCallState()
데이터통신 상태 조회 : tm.getDataState()
이외 많은 함수들을 제공하고 있는데요
상세한 정보를 원하시면 여기클릭 하여 안드로이드 개발자 사이트의 API 를 참조 하세요.
추가로 우리가 많이 필요한 값 중 하나가 안드로이드 단말의 유니크한 값입니다.
많은 분들이 이 값 때문에 고민을 많이 하고 어려워 하고 있는데요.
지금은 android_id 라는 값을 사용하고 있으며 이는 안드로이드의 Secure 클래스에서 제공하고 있습니다.
String android_id = Settings.Secure.getString(this.getContentResolver(),Settings.Secure.ANDROID_ID);
■ 테스트 코드
- AndroidManifest.xml -
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.tutorial.james.androidtutorialtest">
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
- MainActivity.java -
package com.tutorial.james.androidtutorialtest;
import android.content.Context;
import android.os.Bundle;
import android.provider.Settings;
import android.support.v7.app.AppCompatActivity;
import android.telephony.TelephonyManager;
import android.util.Log;
public class MainActivity extends AppCompatActivity {
private static String TAG = "휴대폰 정보 가져오기";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 휴대폰 정보는 TelephonyManager 를 이용
TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
Log.d(TAG, "음성통화 상태 : [ getCallState ] >>> "+tm.getCallState());
Log.d(TAG, "데이터통신 상태 : [ getDataState ] >>> "+tm.getDataState());
Log.d(TAG, "IMEI : [ getDeviceId ] >>>"+tm.getDeviceId());
Log.d(TAG, "전화번호 : [ getLine1Number ] >>> "+tm.getLine1Number());
Log.d(TAG, "통신사 ISO 국가코드 : [ getNetworkCountryIso ] >>> "+tm.getNetworkCountryIso());
Log.d(TAG, "통신사 ISO 국가코드 : [ getSimCountryIso ] >>> "+tm.getSimCountryIso());
Log.d(TAG, "망사업자 MCC+MNC : [ getNetworkOperator ] >>> "+tm.getNetworkOperator());
Log.d(TAG, "망사업자 MCC+MNC : [ getSimOperator ] >>> "+tm.getSimOperator());
Log.d(TAG, "망사업자명 : [ getNetworkOperatorName ] >>> "+tm.getNetworkOperatorName());
Log.d(TAG, "망사업자명 : [ getSimOperatorName ] >>> "+tm.getSimOperatorName());
Log.d(TAG, "SIM 카드 시리얼넘버 : [ getSimSerialNumber ] >>> "+tm.getSimSerialNumber());
Log.d(TAG, "SIM 카드 상태 : [ getSimState ] >>> "+tm.getSimState());
Log.d(TAG, "소프트웨어 버전넘버 : [ getDeviceSoftwareVersion ] >>> "+tm.getDeviceSoftwareVersion());
// 유니크한 단말 번호 >>> Android ID 사용
String android_id = Settings.Secure.getString(this.getContentResolver(),Settings.Secure.ANDROID_ID);
Log.d(TAG, "Android_ID >>> "+android_id);
}
@Override
protected void onResume() {
super.onResume();
}
}
'개발 > android & ios' 카테고리의 다른 글
Android 9.0이상에서 foreground service 퍼미션 (0) | 2020.07.09 |
---|---|
[Android] WebView에서 Javascript Alert 창이 보이지 않을 때 (0) | 2020.07.07 |
[Android] 안드로이드 내 휴대폰(디바이스) 번호 가져오기 [펌] (0) | 2020.07.06 |
[Android] FCM (Firebase Cloud Messaging) 구현 [펌] (0) | 2020.07.05 |
[android] 안드로이드 스튜디오 기기 고유의 토큰값 받아오기 [펌] (0) | 2020.07.05 |