모토롤라 모토로이와 에뮬레이터에서 테스트 해보았는데
getSimOperator() , getSimOperatorName() 는 정상작동합니다.
허나 폰번호를 가져오기 위해 getLine1Number() 를 사용 하면 오류가 나고 있습니다.
아래는 해당 소스와 Manifest 설정입니다.
**** 개발 테스트 소스
public class MainActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TelephonyManager systemService = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
String sSimOperator = systemService.getSimOperator() ; //폰번호를 가져오는 겁니다..
Log.d("sSimOperator" , sSimOperator);
String sSimOperatorName = systemService.getSimOperatorName() ; //폰번호를 가져오는 겁니다..
Log.d("sSimOperatorName" , sSimOperatorName);
String PhoneNumber = systemService.getLine1Number(); //폰번호를 가져오는 겁니다..
Log.d("PhoneNumber" , PhoneNumber);
}
}
**** Android Manifest.xml 내용
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.cofitech"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<activity android:name=".MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<uses-library android:name="android.test.runner" />
</application>
<uses-sdk android:minSdkVersion="6" />
<instrumentation android:targetPackage="com.cofitech" android:name="android.test.InstrumentationTestRunner" />
</manifest>
*** 오류 입니다.
03-17 12:31:17.371: ERROR/AndroidRuntime(295): Caused by: java.lang.SecurityException: Requires READ_PHONE_STATE: Neither user 10024 nor current process has android.permission.READ_PHONE_STATE.
String PhoneNumber = systemService.getLine1Number(); //폰번호를 가져오는 겁니다..
Log.d("PhoneNumber" , PhoneNumber);
요걸로도 모토로이에서 잘 나옵니다.
퍼미션이 안주어지는 문제 같은데 혹시 앱을 설치 했을때 퍼미션을 주고 싶었는데 줄 수 없었어~ 라는 에러 메세지가 있는지 확인해 보세요. 노란색으로 나올껍니다.
켁.. 위의 androidmanifest를 보니 퍼미션이 application 안에 들어가 있네요. 위치가 잘못된듯 합니다.
manifest 안에다 넣어 주세요.