簡體   English   中英

當我嘗試發送文本時,Android App崩潰

[英]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 (例如: numbertrap ),並在onCreate()中指向UserNumberTrapID如下所示,

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM