【发布时间】:2015-03-13 11:57:24
【问题描述】:
在这里,我创建了一个警报 DialogActivity,其中“setPositiveButton”构建器,启动一个简单的对话框并尝试向收件人发送一个 android 电话短信。
但奇怪的是,对话框无法向收件人发送短信。请您帮我理解原因吗?
代码如下:
package com.example.demo;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class DialogActivity extends Activity
{
private Dialog mDialog;
String editTextEnterMobileNum;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder
.setTitle("Incoming Server Message")
.setMessage("text")
.setCancelable(false)
.setPositiveButton("eReceipt?", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int id)
{
dialog.cancel();
mDialog = new Dialog(DialogActivity.this);
mDialog.setContentView(R.layout.ereceipt_dialog);
mDialog.setTitle("User Input");
editTextEnterMobileNum = ((EditText) mDialog.findViewById(R.id.eReceiptEditText)).getText().toString();
mDialog.findViewById(R.id.eReceiptOkButton).setOnClickListener(
new OnClickListener() {
@Override
public void onClick(View v) {
dismissDialog();
try{
android.telephony.SmsManager mSmsManager = android.telephony.SmsManager.getDefault();
mSmsManager.sendTextMessage(editTextEnterMobileNum, null, SmsReceiver.msgContent, null, null);
Toast.makeText(getApplicationContext(), "Your SMS has sent successfully!", Toast.LENGTH_LONG).show();
}
catch(Exception e){
Toast.makeText(getApplicationContext(), "Your SMS sent has failed!", Toast.LENGTH_LONG).show();
e.printStackTrace();
}
}
});
mDialog.show();
}
})
.setNegativeButton("Exit", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int id)
{
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
//finish();
}
public void dismissDialog() {
if (mDialog != null) {
mDialog.dismiss();
mDialog = null;
}
}
}
Logcat 的输出是:
03-13 18:09:58.139: E/ViewRootImpl(21086): sendUserActionEvent() mView == null
03-13 18:10:13.999: W/System.err(21086): java.lang.IllegalArgumentException: Invalid destinationAddress
03-13 18:10:14.009: W/System.err(21086): at android.telephony.SmsManager.sendTextMessage(SmsManager.java:120)
03-13 18:10:14.009: W/System.err(21086): at com.watchdata.qposdemo.DialogActivity$1$1.onClick(DialogActivity.java:66)
03-13 18:10:14.009: W/System.err(21086): at android.view.View.performClick(View.java:4475)
03-13 18:10:14.009: W/System.err(21086): at android.view.View$PerformClick.run(View.java:18786)
03-13 18:10:14.009: W/System.err(21086): at android.os.Handler.handleCallback(Handler.java:730)
03-13 18:10:14.009: W/System.err(21086): at android.os.Handler.dispatchMessage(Handler.java:92)
03-13 18:10:14.009: W/System.err(21086): at android.os.Looper.loop(Looper.java:176)
03-13 18:10:14.009: W/System.err(21086): at android.app.ActivityThread.main(ActivityThread.java:5419)
03-13 18:10:14.009: W/System.err(21086): at java.lang.reflect.Method.invokeNative(Native Method)
03-13 18:10:14.009: W/System.err(21086): at java.lang.reflect.Method.invoke(Method.java:525)
03-13 18:10:14.009: W/System.err(21086): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)
03-13 18:10:14.009: W/System.err(21086): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
03-13 18:10:14.009: W/System.err(21086): at dalvik.system.NativeStart.main(Native Method)
03-13 18:10:14.629: E/ViewRootImpl(21086): sendUserActionEvent() mView == null
03-13 18:10:14.724: D/AbsListView(21086): onVisibilityChanged() is called, visibility : 8
03-13 18:10:14.724: D/AbsListView(21086): unregisterIRListener() is called
03-13 18:10:14.729: D/AbsListView(21086): Get MotionRecognitionManager
03-13 18:10:14.744: D/AbsListView(21086): onVisibilityChanged() is called, visibility : 4
03-13 18:10:14.744: D/AbsListView(21086): unregisterIRListener() is called
03-13 18:10:14.749: D/AbsListView(21086): onVisibilityChanged() is called, visibility : 0
03-13 18:10:14.749: D/AbsListView(21086): unregisterIRListener() is called
03-13 18:10:14.854: D/AbsListView(21086): unregisterIRListener() is called
在调试过程中,执行失败进入到OnClickListener()
mDialog.findViewById(R.id.eReceiptOkButton).setOnClickListener(
new OnClickListener() {
我不知道为什么?
【问题讨论】:
-
你能发布异常吗?日志猫?
-
@Boban S : 我已经重新编辑了 logcat 捕获的异常语句。
-
您发布的logcat与发送短信的代码无关。您是否在 logcat 中有错误?
-
错误显示原因
java.lang.IllegalArgumentException: Invalid destinationAddress,您输入的号码无效 -
感谢博班指出问题...我分析并解决了问题并重新发布了正确的代码。
标签: android