簡體   English   中英

使用Android應用程序發送短信

[英]Sending text message using android application

我正在嘗試通過遵循教程來構建SMS應用程序,並且一切正常,除了當我按下“ send button ,我在EditText輸入了其號碼的其他用戶未收到該message 在應用程序中,我有兩個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應用程序發送消息,它可以工作,但是我剛剛制作的應用程序不起作用。有人可以幫忙嗎? 謝謝 :)

實際上,您沒有在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();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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