Здесь я создал предупреждение DialogActivity, где построил «setPositiveButton», запустил простой диалог и попытался отправить сообщение sms для телефонии android для получателя.Почему android.telephony.SmsManager не может отправлять сообщения из диалогового окна?
Но таинственно диалоговое окно не может отправлять sms получателю. Не могли бы вы помочь мне понять причину?
Вот код:
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() {
I я не могу понять, почему?
Можете ли вы разместить исключение? LogCat? –
@Boban S: Я повторно отредактировал с помощью оператора исключения, зафиксированного logcat. – gauravsheohar
Логарифм, который вы опубликовали, не связан с кодом для отправки SMS. У вас есть ошибки в logcat? –