在 Android Eclipse 中发送 SMS 消息
Sending SMS Message in Android Eclipse
我正在创建一个简单的应用程序,每次用户打开该应用程序时都会发送短信,但我无法发送预配对消息。这是我的代码:
MainActivity.java:
//The contact number is save in a number.text, so i get it first
FileInputStream fIn = null;
InputStreamReader isr = null;
String number = null;
try{
char[] inputBuffer = new char[1024];
String data = null;
fIn = openFileInput("number.txt");
isr = new InputStreamReader(fIn);
isr.read(inputBuffer);
data = new String(inputBuffer);
number = data;
isr.close();
fIn.close();
if(number == null || number.length() < 10){
//Do nothing
}else{
smsBody = "Hello World!";
try {
// Get the default instance of the SmsManager
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(number, null, smsBody, null, null);//Im not able to send this.
Toast.makeText(getApplicationContext(), "Message Sent to " + number + ".",
Toast.LENGTH_LONG).show();
} catch (Exception ex) {
Toast.makeText(getApplicationContext(),"Sending message failed!",
Toast.LENGTH_LONG).show();
ex.printStackTrace();
}
}
}catch(IOException e){
//Do nothing
}
我已经在清单文件中设置了权限。这是我的权限代码。
<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.READ_SMS"/>
//Im adding some features so i need this
<uses-permission android:name="android.permission.RECEIVE_MMS"/>
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
toast 消息显示消息已发送,但我无法接收。
但是当我将 MainActivity.java
更改为这样时:
//The contact number is save in a number.text, so i get it first
FileInputStream fIn = null;
InputStreamReader isr = null;
String number = null;
try{
char[] inputBuffer = new char[1024];
String data = null;
fIn = openFileInput("number.txt");
isr = new InputStreamReader(fIn);
isr.read(inputBuffer);
data = new String(inputBuffer);
number = data;
isr.close();
fIn.close();
if(number == null || number.length() < 10){
//Do nothing
}else{
smsBody = "Hello World!";
try {
// Get the default instance of the SmsManager
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage("48612156715", null, smsBody, null, null);//I change this from smsManager.sendTextMessage(number, null, smsBody, null, null); where the 48612115 is my example number.
Toast.makeText(getApplicationContext(), "Message Sent to " + number + ".",
Toast.LENGTH_LONG).show();
} catch (Exception ex) {
Toast.makeText(getApplicationContext(),"Sending message failed!",
Toast.LENGTH_LONG).show();
ex.printStackTrace();
}
}
}catch(IOException e){
//Do nothing
}
我现在可以收到消息了,我需要先获取 number.text 文件的值并将其放入变量中,然后将其用作数字,但它不起作用。
这可以是:
您的硬编码号码 48612115 有 8 位数字,您正在检查少于 10 位并且在您的 if
块中什么都不做。
if(number == null || number.length() < 10)
{
// do nothing
}
else
{
// send message
}
您应该检查语法是否正确。
希望对您有所帮助!
好的,感谢大家,我找到了解决我自己问题的方法。 :-) 这是代码:
String phoneNumber = "";
String smsBody = "Example Message";
try {
InputStream instream = new FileInputStream(
"data/data/com.example.test/files/number.txt");
if (instream != null) {
InputStreamReader inputreader = new InputStreamReader(instream);
BufferedReader buffreader = new BufferedReader(inputreader);
String line;
if ((line = buffreader.readLine()) != null)
phoneNumber = line;
try {
// Get the default instance of the SmsManager
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(phoneNumber, null, smsBody, null, null);
Toast.makeText(getApplicationContext(), "Message Sent to " + phoneNumber + ".",
Toast.LENGTH_LONG).show();
} catch (Exception ex) {
Toast.makeText(getApplicationContext(),"Sending Message failed!",
Toast.LENGTH_LONG).show();
ex.printStackTrace();
}
instream.close();
}
} catch (IOException e) {
Toast.makeText(getApplicationContext(),e,
Toast.LENGTH_LONG).show();
}
谢谢大家!
我正在创建一个简单的应用程序,每次用户打开该应用程序时都会发送短信,但我无法发送预配对消息。这是我的代码:
MainActivity.java:
//The contact number is save in a number.text, so i get it first
FileInputStream fIn = null;
InputStreamReader isr = null;
String number = null;
try{
char[] inputBuffer = new char[1024];
String data = null;
fIn = openFileInput("number.txt");
isr = new InputStreamReader(fIn);
isr.read(inputBuffer);
data = new String(inputBuffer);
number = data;
isr.close();
fIn.close();
if(number == null || number.length() < 10){
//Do nothing
}else{
smsBody = "Hello World!";
try {
// Get the default instance of the SmsManager
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(number, null, smsBody, null, null);//Im not able to send this.
Toast.makeText(getApplicationContext(), "Message Sent to " + number + ".",
Toast.LENGTH_LONG).show();
} catch (Exception ex) {
Toast.makeText(getApplicationContext(),"Sending message failed!",
Toast.LENGTH_LONG).show();
ex.printStackTrace();
}
}
}catch(IOException e){
//Do nothing
}
我已经在清单文件中设置了权限。这是我的权限代码。
<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.READ_SMS"/>
//Im adding some features so i need this
<uses-permission android:name="android.permission.RECEIVE_MMS"/>
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
toast 消息显示消息已发送,但我无法接收。
但是当我将 MainActivity.java
更改为这样时:
//The contact number is save in a number.text, so i get it first
FileInputStream fIn = null;
InputStreamReader isr = null;
String number = null;
try{
char[] inputBuffer = new char[1024];
String data = null;
fIn = openFileInput("number.txt");
isr = new InputStreamReader(fIn);
isr.read(inputBuffer);
data = new String(inputBuffer);
number = data;
isr.close();
fIn.close();
if(number == null || number.length() < 10){
//Do nothing
}else{
smsBody = "Hello World!";
try {
// Get the default instance of the SmsManager
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage("48612156715", null, smsBody, null, null);//I change this from smsManager.sendTextMessage(number, null, smsBody, null, null); where the 48612115 is my example number.
Toast.makeText(getApplicationContext(), "Message Sent to " + number + ".",
Toast.LENGTH_LONG).show();
} catch (Exception ex) {
Toast.makeText(getApplicationContext(),"Sending message failed!",
Toast.LENGTH_LONG).show();
ex.printStackTrace();
}
}
}catch(IOException e){
//Do nothing
}
我现在可以收到消息了,我需要先获取 number.text 文件的值并将其放入变量中,然后将其用作数字,但它不起作用。
这可以是:
您的硬编码号码 48612115 有 8 位数字,您正在检查少于 10 位并且在您的 if
块中什么都不做。
if(number == null || number.length() < 10)
{
// do nothing
}
else
{
// send message
}
您应该检查语法是否正确。
希望对您有所帮助!
好的,感谢大家,我找到了解决我自己问题的方法。 :-) 这是代码:
String phoneNumber = "";
String smsBody = "Example Message";
try {
InputStream instream = new FileInputStream(
"data/data/com.example.test/files/number.txt");
if (instream != null) {
InputStreamReader inputreader = new InputStreamReader(instream);
BufferedReader buffreader = new BufferedReader(inputreader);
String line;
if ((line = buffreader.readLine()) != null)
phoneNumber = line;
try {
// Get the default instance of the SmsManager
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(phoneNumber, null, smsBody, null, null);
Toast.makeText(getApplicationContext(), "Message Sent to " + phoneNumber + ".",
Toast.LENGTH_LONG).show();
} catch (Exception ex) {
Toast.makeText(getApplicationContext(),"Sending Message failed!",
Toast.LENGTH_LONG).show();
ex.printStackTrace();
}
instream.close();
}
} catch (IOException e) {
Toast.makeText(getApplicationContext(),e,
Toast.LENGTH_LONG).show();
}
谢谢大家!