마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

전화번호 얻어오는방법... 왜 안될까요?

0 추천
public class MainActivity extends Activity  {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
};
 
public void onClick(View v) {
switch (v.getId()) {
case R.id.button1:
Intent intent1 = new Intent(this,activity_1.class);
startActivity(intent1);
       break;
case R.id.button2:
Intent intent2 = new Intent(this,activity_2.class);
startActivity(intent2);
break;
case R.id.button3:
Intent intent3 = new Intent(this,activity_3.class);
startActivity(intent3);
break;
case R.id.button4:
Intent intent4 = new Intent(this,activity_4.class);
startActivity(intent4);
break;
}
};
 
------------------------------------------------------------------- 이게 메인소스구요.
 
 
 
 
 
 
 
 
 
 
 
package com.example.whoami;
 
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.telephony.TelephonyManager;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
 
public class activity_1 extends Activity {
public void onCreate(Bundle savedInstanceState){
 
Activity mAppContext = null;
TelephonyManager tMgr = (TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE);
String mPhoneNumber = tMgr.getLine1Number();
 
TextView joke = (TextView) findViewById(R.id.textView1);
joke.setText(mPhoneNumber);
 
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_1);
 
 
}
 
 
-------------------------------------------------------------------이게 인텐트1의 엑티비티소스인데요.
 
실행하고 버튼누르면 아무런증상도없이 꺼집니다.

키누르면 finish호출하는것때문에 그런가해서 주석처리해봤는데도 안되는듯하구요..

제가 뭘 잘못한거죠..?

봉쿠탁 (310 포인트) 님이 2014년 3월 27일 질문

1개의 답변

+1 추천
 
채택된 답변

아무런 증상도 없이 꺼질리가요 ㅠ 로그캣에 오류가 뜰텐데..

그걸 첨부해주시면 답변하기 수월합니다.

 

제가 볼때 의심가는 부분은 크게 3가지인데

 

#1 

onClick 메소드는 정상적으로 수행이 되던가요?

글쓴님 방식대로 사용하려면 OnClickListener 을 상속받고 버튼을 리스너에 등록해줘야하는데..

public class MainActivity extends Activity implements OnClickListener {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  Button bt1 = (Button)findViewById(R.id.button1);
  bt1.setOnClickListener(this);

 }

 

public void onClick(View v) {
  switch (v.getId()) {
  case R.id.button1:
   Toast.makeText(getBaseContext(), "1번", Toast.LENGTH_SHORT).show();
   break;

  }

}

 

#2

유저 퍼미션을 등록해주셨나요?

AndroidMenifest.xml 파일에 아래의 폰 상태를 읽을 수 있는 권한을 주셔야해요

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

 

#3

Activity mAppContext = null;
TelephonyManager tMgr = (TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE);
 
컨텍스트에 null 을 주고 시스템 서비스를 호출하셨으니.. 에러가 날 밖에?? 이유가 있으신건가요
 
 
우선은, 1번 2번 3번 확인하시고 아래의 코드를 써서 테스트 해보세요~

public class MainActivity extends Activity implements OnClickListener {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);

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

  TextView tv = (TextView)findViewById(R.id.textView1);
  tv.setText(mPhoneNumber);
  
  Button bt1 = (Button)findViewById(R.id.button1);
  bt1.setOnClickListener(this);
 }

 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
  // Inflate the menu; this adds items to the action bar if it is present.
  getMenuInflater().inflate(R.menu.main, menu);
  return true;
 }

 public void onClick(View v) {
  switch (v.getId()) {
  case R.id.button1:
   Toast.makeText(getBaseContext(), "1번", Toast.LENGTH_SHORT).show();
   break;
  case R.id.button2:
   Toast.makeText(getBaseContext(), "2번", Toast.LENGTH_SHORT).show();
   break;
  case R.id.button3:
   Toast.makeText(getBaseContext(), "3번", Toast.LENGTH_SHORT).show();
   break;
  case R.id.button4:
   Toast.makeText(getBaseContext(), "4번", Toast.LENGTH_SHORT).show();
   break;
  }
 }

 

초보개발자ㅠ (33,870 포인트) 님이 2014년 3월 27일 답변
봉쿠탁님이 2014년 3월 27일 채택됨
...