1

Android 애플리케이션에서 특수 SMS에 대한 응답으로 전화를 걸고 싶습니다. 그래서 나는 오는 메시지를 듣고 특정 SMS 때문에 전화를하는 앱을 만들었다. 응용 프로그램은 예상대로 에뮬레이터에서 작동하지만 Android 4.0.3이있는 탭에서 응용 프로그램을 실행하려고하면 호출을 시작한 직후 호출이 종료됩니다. 다음은 내가 사용한 코드입니다.브로드 캐스트 수신기에서 프로그래밍 방식으로 전화 걸기

public class MainActivity extends Activity { 
public static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED"; 
String msgBody; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    IntentFilter filter = new IntentFilter(SMS_RECEIVED); 
    registerReceiver(broadcastReceiver, filter); 
} 

BroadcastReceiver broadcastReceiver = new BroadcastReceiver() { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     // TODO Auto-generated method stub 

     if(intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")){ 
      Bundle bundle = intent.getExtras();   
      SmsMessage[] msgs = null; 
      String msg_from; 
      if (bundle != null){ 

       try{ 
        Object[] pdus = (Object[]) bundle.get("pdus"); 
        msgs = new SmsMessage[pdus.length]; 
        for(int i=0; i<msgs.length; i++){ 
         msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]); 
         msg_from = msgs[i].getOriginatingAddress(); 
         msgBody = msgs[i].getMessageBody(); 
        } 
       }catch(Exception e){ 

       } 
      } 
     } 

     } 
     Toast.makeText(getApplicationContext(), msgBody, Toast.LENGTH_LONG).show(); 

     if(msgBody.equals("CALL")){ 
      Intent myIntent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + "XXXXXXXXXXX"));; 
      myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      context.startActivity(myIntent); 
    } 
}; 


@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; 
}  
} 

내가 추가 한 다음 사용 권한

여기에 잘못된 무엇
READ_SMS 
RECEIVE_SMS 
CALL_PHONE 

? 도와주세요.

고맙습니다.

+0

은 로그를 확인하실 수 있습니다 혹시 충돌이 있는지 확인 하시겠습니까? 귀하의 타블렛이 모뎀을 가지고 있고 전화 통신을 지원하기를 바랍니다. – Sushil

+0

'전화를 시작한 직후 전화를 끊습니다. '무엇을 원하니? – njzk2

+0

@Sushil : 태블릿에 SMS가 수신 중이므로 한 번만 호출 할 수 있습니다. – njzk2

답변

1

다른 활동을 작성 CallActivity 말, 수신기의 예에서이 활동을 시작

에서 onCreate() CallActivity 방법, 바로 호출 전화 의도 출시에 이제
Intent i=new Intent(); 
i.setClass(context,callActivity.class); 
i.putExtra("number","phone_number"); 
i.setFlags(Intent.Flag_Activity_newTask); 
context.startActivity(i); 

:

Intent myIntent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + "XXXXXXXXXXX"));; 
    startActivity(myIntent); 
관련 문제