外部類作爲事件監聽器。創建一個項目,界面中包含2個EditText和1個按鈕,用戶點擊按鈕時顯示提示信息:短信發送完成,可參考下圖所示。要求:使用外部類作爲監聽器。
java代碼
import android.Manifest;
import android.app.Activity;
import android.content.Context;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends AppCompatActivity {
private Button bt_submit;
private EditText et_content;
private EditText et_number;
private Context ctx;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
ctx=this;
initUi();
initData();
}
private void initData() {
bt_submit.setOnClickListener(new SendSmsListener(this,et_number,et_content){});
}
private void initUi() {
bt_submit = findViewById(R.id.bt_submit);
et_content = findViewById(R.id.et_content);
et_number = findViewById(R.id.et_number);
new Thread(){
@RequiresApi(api = Build.VERSION_CODES.M)
@Override
public void run() {
if (getApplicationContext().checkSelfPermission( Manifest.permission.SEND_SMS) != PackageManager.PERMISSION_GRANTED
){
ActivityCompat.requestPermissions((Activity) ctx, new String[]{Manifest.permission.SEND_SMS}, 1);
}
}
}.start();
}
}
public class SendSmsListener implements View.OnClickListener {
private Activity mainActivity;
private EditText et_number;
private EditText et_content;
public SendSmsListener(MainActivity mainActivity, EditText et_number, EditText et_content) {
this.mainActivity = mainActivity;
this.et_number = et_number;
this.et_content = et_content;
}
@Override
public void onClick(View v) {
String number= et_number.getText().toString();
String content= et_content.getText().toString();
SmsManager smsManager= SmsManager.getDefault();
PendingIntent pi = PendingIntent.getBroadcast(mainActivity, 0, new Intent(), 0);
smsManager.sendTextMessage(number,null,content,pi,null);
Toast.makeText(mainActivity, "短信發送完成", Toast.LENGTH_LONG).show();
}
}
XML佈局文件
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="10dp"
tools:context=".MainActivity">
<EditText
android:id="@+id/et_number"
android:hint="請填寫收信號碼"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text=""
android:textSize="16sp"
/>
<EditText
android:id="@+id/et_content"
android:hint="請填寫短信內容"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text=""
android:textSize="16sp"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="發送"
android:id="@+id/bt_submit"/>
</LinearLayout>