[英]Android App crashes when I try to send a text
經過一些研究,似乎崩潰是由新手編碼導致的,更具體地講,可能是發送短信功能的位置。該應用僅在我嘗試通過此應用發送文本時崩潰。 在開發人員模式下,虛擬電話和通過USB連接的實際電話會崩潰。 SIM卡很好。 我不知道如何解決崩潰。 謝謝您的幫助! 這是下面MainActivity.java中的代碼。 我確實有一個工作正常的MessageReceiver類。
//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
在布局文件中創建兩個EditText
(例如: number
和trap
),並在onCreate()中指向UserNumber
和TrapID
如下所示,
UserNumber = (EditText) findViewById(R.id.number);
TrapID = (EditText) findViewById(R.id.trap);
在Android清單文件中授予SEND_SMS權限,
<uses-permission android:name="android.permission.SEND_SMS"/>
檢查是否還需要在onCreate()中授予運行時權限(取決於targetSdkVersion
),
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.SEND_SMS}, 1);
添加所有這些,代碼對我有用。 希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.