使用 android 应用程序发送短信
Sending text message using android application
我正在尝试按照 this 教程构建 SMS 应用程序,一切似乎都很好,除了当我点击 send button
时,其他人没有收到 message
我在 EditText
中输入了号码的用户。
在应用程序中,我有两个 EditText
和一个 button
。一个 EditText
用于 message
,另一个用于指定接收器的 phone number
。代码如下:
MainActivity.java
public class MainActivity extends AppCompatActivity {
private static final int MY_PERMISSIONS_REQUEST_SEND_SMS =0 ;
Button send;
EditText message;
EditText phoneno;
String number;
String txt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
send=(Button)findViewById(R.id.sendButton);
message=(EditText)findViewById(R.id.textMessage);
phoneno=(EditText)findViewById(R.id.phone);
send.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
sendSMSMessage();
}
});
}
public void sendSMSMessage(){
number=phoneno.getText().toString();
txt=message.getText().toString();
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.SEND_SMS)
!= PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(this,
Manifest.permission.SEND_SMS)) {
} else {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.SEND_SMS},
MY_PERMISSIONS_REQUEST_SEND_SMS);
}
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
//super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case MY_PERMISSIONS_REQUEST_SEND_SMS: {
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(number, null, txt, null, null);
Toast.makeText(getApplicationContext(), "SMS sent.",
Toast.LENGTH_LONG).show();
} else {
Toast.makeText(getApplicationContext(),
"SMS faild, please try again.", Toast.LENGTH_LONG).show();
return;
}
}
}
}
}
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.shaloin.sample852.MainActivity">
<EditText
android:id="@+id/textMessage"
android:textSize="20sp"
android:layout_marginTop="20dp"
android:hint="Text Message"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<EditText
android:id="@+id/phone"
android:layout_below="@+id/textMessage"
android:textSize="20sp"
android:layout_marginTop="20dp"
android:hint="Phone Number"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/sendButton"
android:layout_below="@+id/phone"
android:layout_centerHorizontal="true"
android:text="Send"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
AndroidManifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.shaloin.sample852">
<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
我已经尝试使用内置的 SMS 应用程序发送消息并且它可以工作,但是我刚刚制作的应用程序没有't.Can有人帮忙吗?谢谢:)
其实你并没有在sendSMSMessage
函数中写发送消息的代码,可能是第一次发送消息。
public void sendSMSMessage() {
number = phoneno.getText().toString();
txt = message.getText().toString();
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.SEND_SMS)
!= PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(this,
Manifest.permission.SEND_SMS)) {
} else {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.SEND_SMS},
MY_PERMISSIONS_REQUEST_SEND_SMS);
}
return;
}
sendMessage();
}
public void sendMessage() {
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(number, null, txt, null, null);
Toast.makeText(getApplicationContext(), "SMS sent.",
Toast.LENGTH_LONG).show();
}
我正在尝试按照 this 教程构建 SMS 应用程序,一切似乎都很好,除了当我点击 send button
时,其他人没有收到 message
我在 EditText
中输入了号码的用户。
在应用程序中,我有两个 EditText
和一个 button
。一个 EditText
用于 message
,另一个用于指定接收器的 phone number
。代码如下:
MainActivity.java
public class MainActivity extends AppCompatActivity {
private static final int MY_PERMISSIONS_REQUEST_SEND_SMS =0 ;
Button send;
EditText message;
EditText phoneno;
String number;
String txt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
send=(Button)findViewById(R.id.sendButton);
message=(EditText)findViewById(R.id.textMessage);
phoneno=(EditText)findViewById(R.id.phone);
send.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
sendSMSMessage();
}
});
}
public void sendSMSMessage(){
number=phoneno.getText().toString();
txt=message.getText().toString();
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.SEND_SMS)
!= PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(this,
Manifest.permission.SEND_SMS)) {
} else {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.SEND_SMS},
MY_PERMISSIONS_REQUEST_SEND_SMS);
}
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
//super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case MY_PERMISSIONS_REQUEST_SEND_SMS: {
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(number, null, txt, null, null);
Toast.makeText(getApplicationContext(), "SMS sent.",
Toast.LENGTH_LONG).show();
} else {
Toast.makeText(getApplicationContext(),
"SMS faild, please try again.", Toast.LENGTH_LONG).show();
return;
}
}
}
}
}
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.shaloin.sample852.MainActivity">
<EditText
android:id="@+id/textMessage"
android:textSize="20sp"
android:layout_marginTop="20dp"
android:hint="Text Message"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<EditText
android:id="@+id/phone"
android:layout_below="@+id/textMessage"
android:textSize="20sp"
android:layout_marginTop="20dp"
android:hint="Phone Number"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/sendButton"
android:layout_below="@+id/phone"
android:layout_centerHorizontal="true"
android:text="Send"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
AndroidManifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.shaloin.sample852">
<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
我已经尝试使用内置的 SMS 应用程序发送消息并且它可以工作,但是我刚刚制作的应用程序没有't.Can有人帮忙吗?谢谢:)
其实你并没有在sendSMSMessage
函数中写发送消息的代码,可能是第一次发送消息。
public void sendSMSMessage() {
number = phoneno.getText().toString();
txt = message.getText().toString();
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.SEND_SMS)
!= PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(this,
Manifest.permission.SEND_SMS)) {
} else {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.SEND_SMS},
MY_PERMISSIONS_REQUEST_SEND_SMS);
}
return;
}
sendMessage();
}
public void sendMessage() {
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(number, null, txt, null, null);
Toast.makeText(getApplicationContext(), "SMS sent.",
Toast.LENGTH_LONG).show();
}