App Android cai quando eu tento enviar um texto

Depois de algumas pesquisas, parece que o estoiro é um resultado de codificação de Iniciantes, mais especificamente, talvez a localização de onde a função SMS de envio ocorre o app só falha quando tento enviar um texto através deste app. Ele quebra com um telefone virtual e um telefone real conectado através de usb no modo de desenvolvimento. O cartão Sim está bom. Não faço ideia de como reparar o acidente. Obrigado pela ajuda! Aqui está o código da MainActivity.java abaixo. Tenho uma aula de distribuição de mensagens que funciona. fino.

//import stuff is fine
...

public class MainActivity extends AppCompatActivity {

    EditText UserNumber;    //tvNumber
    EditText TrapID;        //tvMessage
    IntentFilter intentFilter;

    private BroadcastReceiver intentReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            //where to put received message
            //putting in text view for now to demonstrate it works
            TextView inTxt = (TextView) findViewById(R.id.txtMsg);
            inTxt.setText(intent.getExtras().getString("message"));
        }

    };

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

        //intent to filter for SMS received
        intentFilter = new IntentFilter();
        intentFilter.addAction("SMS_RECEIVED_ACTION");

        Button SimulateActive = (Button)findViewById(R.id.SimulateActive);
        SimulateActive.setOnClickListener(sendAutoMsg);
    };

    private View.OnClickListener sendAutoMsg = new View.OnClickListener(){
        public void onClick(View v){
            String trapID = TrapID.getText().toString();
            String AutoMessage = ("Hello. Trap:"+trapID+"has been activated.");
            String usrnum = UserNumber.getText().toString();
            sendMsg (usrnum, AutoMessage);
        }
    };

    protected void sendMsg (String usrnum, String AutoMessage){
        String SENT = "Message Sent";
        String DELIVERED = "Message Delivered";

        PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, new Intent(SENT),0);
        PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0, new Intent(DELIVERED),0);

        SmsManager sms = SmsManager.getDefault();
        sms.sendTextMessage(usrnum, null, AutoMessage, sentPI, deliveredPI);

    }
    @Override
    protected void onResume() {
        //register the receiver
        registerReceiver(intentReceiver, intentFilter);
        super.onResume();

    }

    @Override
    protected void onPause(){
        //unregister receiver
        unregisterReceiver(intentReceiver);
        super.onPause();
    }


}//end
Author: nandsito, 2017-04-21

1 answers

Criar dois EditText em Ficheiro de layout (eg: number e trap) e ponto UserNumber e TrapID como em baixo no onCreate (),

UserNumber =  (EditText) findViewById(R.id.number);
TrapID = (EditText) findViewById(R.id.trap);

Dá permissão ao send_sms no ficheiro de manifesto do android,

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

Verifique se você precisa dar permissão de execução em oncreato() também (depende do seu targetSdkVersion),

ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.SEND_SMS}, 1);
Adicionando tudo isto, o código funcionou comigo. Espero que isto ajude.
 0
Author: Asok Aravinda, 2017-04-21 22:45:27