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
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.