1

在我的Android應用程序中,我想撥打電話作爲對特殊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:平板電腦正在接收短信,所以人們只能假設... – njzk2

回答

1

創建另一個活動說CallActivity,從接收機如啓動這項活動

Intent i=new Intent(); 
i.setClass(context,callActivity.class); 
i.putExtra("number","phone_number"); 
i.setFlags(Intent.Flag_Activity_newTask); 
context.startActivity(i); 
中的onCreate()CallActivity的方法,只要啓動呼叫電話的意圖

現在:

Intent myIntent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + "XXXXXXXXXXX"));; 
    startActivity(myIntent); 
相關問題