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: планшет получает SMS, поэтому можно только предположить ... – 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); 
Смежные вопросы