PhoneNumberUtils、Toast、Intent

本文介绍了一个简单的Android应用程序中实现拨打电话功能的方法。首先检查输入的电话号码是否有效,然后使用Intent.ACTION_DIAL启动拨号界面。若电话号码无效,则通过Toast提示用户。此过程涉及Intent与URI的使用。

tring phoneNum = eText.getText().toString();

if (PhoneNumberUtils.isGlobalPhoneNumber(phoneNum)) {

/*

 * 创建一个新的Intent对象的基本语法如下: Intent <intent_name> = new

 * Intent(<action>,<Data>) 在Android中,传递给Intent的数据用URI格式表示

 */

Intent intent_call = new Intent(Intent.ACTION_DIAL, Uri

.parse("tel://" + phoneNum));

startActivity(intent_call);

} else {

// 1、 这里的第一个参数不能用this,因为此时是在内部类OnClickListener中,this指的是它

// 这里应该是用MyDialer.this

// 2、Toast是包含给用户快速提醒信息的一种通知机制

Toast.makeText(MyDialer.this, R.string.incorrect_num,

Toast.LENGTH_LONG).show();

}

package com.weishitechsub.mfhfllcx.fragment.remind; import android.content.Intent; import android.util.Log; import android.view.View; import android.widget.EditText; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import com.hfd.common.base.BaseActivity; import com.wdullaer.materialdatetimepicker.date.DatePickerDialog; import com.weishitechsub.mfhfllcx.MainActivity; import com.weishitechsub.mfhfllcx.R; import com.weishitechsub.mfhfllcx.utils.OnMultiClickListener; import com.weishitechsub.mfhfllcx.utils.PhoneNumberUtils; import com.weishitechsub.mfhfllcx.view.ProvincePickerSheet; import java.util.Arrays; import java.util.Calendar; public class AddActivity extends BaseActivity { ImageView iv_back; TextView tv_operators,tv_date,tv_monthly,tv_tips_date,tv_tips_time,tv_but; EditText ed_phone; private ProvincePickerSheet sheetOperators; private String operators,tips_date,tips_time,data; private String selectedButton; @Override protected int setLayout() { return R.layout.activity_add; } @Override protected void setView() { iv_back = fvbi(R.id.iv_back); ed_phone = fvbi(R.id.ed_phone); tv_operators = fvbi(R.id.tv_operators); tv_date = fvbi(R.id.tv_date); tv_monthly = fvbi(R.id.tv_monthly); tv_tips_date = fvbi(R.id.tv_tips_date); tv_tips_time = fvbi(R.id.tv_tips_time); tv_but = fvbi(R.id.tv_but); } @Override protected void setData() { // 获取传递过来的数据 selectedButton = getIntent().getStringExtra("selectedButton"); Log.i("11111111","selectedButton"+selectedButton); //运营商 sheetOperators = new ProvincePickerSheet(Arrays.asList(getResources().getStringArray(R.array.Operators)), operators -> { // 回调 this.operators = operators; tv_operators.setText(operators); }); } @Override protected void setClick() { iv_back.setOnClickListener(new OnMultiClickListener() { @Override public void onMultiClick(View v) { finish(); } }); tv_but.setOnClickListener(new OnMultiClickListener() { @Override public void onMultiClick(View v) { String trim = ed_phone.getText().toString().trim(); boolean isValid = PhoneNumberUtils.checkChineseMobile(trim); if (isValid) { // 将信息封装到 IntentIntent resultIntent = new Intent(); resultIntent.putExtra("trim",trim); resultIntent.putExtra("data",data); resultIntent.putExtra("tips_date",tips_date); resultIntent.putExtra("operators",operators); resultIntent.putExtra("selectedButton",selectedButton); // 设置返回结果 setResult(RESULT_OK, resultIntent); finish(); }else { Toast.makeText(mContext, "请输入有效手机号", Toast.LENGTH_SHORT).show(); } } }); tv_operators.setOnClickListener(new OnMultiClickListener() { @Override public void onMultiClick(View v) { sheetOperators.show(getSupportFragmentManager(), "OperatorsPickerSheet"); } }); tv_tips_date.setOnClickListener(new OnMultiClickListener() { @Override public void onMultiClick(View v) { // 获取当前日期 Calendar now = Calendar.getInstance(); DatePickerDialog dpd = DatePickerDialog.newInstance( (view, year, monthOfYear, dayOfMonth) -> { // 由于 Calendar 月份从 0 开始,这里将其转换为从 1 开始的月份 int actualMonth = monthOfYear + 1; // 处理选择的年份 tv_tips_date.setText(year + "-" + actualMonth + "-" + dayOfMonth); tips_date = tv_tips_date.getText().toString(); }, now.get(Calendar.YEAR), now.get(Calendar.MONTH), now.get(Calendar.DAY_OF_MONTH) ); // 显示日期选择对话框 dpd.show(getSupportFragmentManager(), "Datepickerdialog"); } }); //缴费日期 tv_date.setOnClickListener(new OnMultiClickListener() { @Override public void onMultiClick(View v) { // 获取当前日期 Calendar now = Calendar.getInstance(); DatePickerDialog dpd = DatePickerDialog.newInstance( (view, year, monthOfYear, dayOfMonth) -> { // 由于 Calendar 月份从 0 开始,这里将其转换为从 1 开始的月份 int actualMonth = monthOfYear + 1; // 处理选择的年份 tv_date.setText(year + "-" + actualMonth + "-" + dayOfMonth); data = tv_date.getText().toString(); }, now.get(Calendar.YEAR), now.get(Calendar.MONTH), now.get(Calendar.DAY_OF_MONTH) ); // 显示日期选择对话框 dpd.show(getSupportFragmentManager(), "Datepickerdialog"); } }); tv_tips_time.setOnClickListener(new OnMultiClickListener() { @Override public void onMultiClick(View v) { // 获取当前日期 Calendar now = Calendar.getInstance(); DatePickerDialog dpd = DatePickerDialog.newInstance( (view, year, monthOfYear, dayOfMonth) -> { // 由于 Calendar 月份从 0 开始,这里将其转换为从 1 开始的月份 int actualMonth = monthOfYear + 1; // 处理选择的年份 tv_tips_time.setText(year + "-" + actualMonth + "-" + dayOfMonth); tips_time = tv_tips_time.getText().toString(); }, now.get(Calendar.YEAR), now.get(Calendar.MONTH), now.get(Calendar.DAY_OF_MONTH) ); // 显示日期选择对话框 dpd.show(getSupportFragmentManager(), "Datepickerdialog"); } }); } }如上代码设置在点击tv_but的时候设置根据tips_date这个字段的日期提醒
最新发布
11-22
package com.weishitechsub.mfhfllcx.fragment.remind; import static android.app.Activity.RESULT_OK; import static android.content.Context.MODE_PRIVATE; import android.content.Intent; import android.content.SharedPreferences; import android.util.Log; import android.view.View; import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.TextView; import androidx.annotation.Nullable; import androidx.core.content.ContextCompat; import com.hfd.common.base.BaseFragment; import com.weishitechsub.mfhfllcx.R; import com.weishitechsub.mfhfllcx.utils.OnMultiClickListener; public class RemindFragment extends BaseFragment { private static final int REQUEST_CODE = 1; TextView tv_operators,tv_date,tv_remind_date,tv_num,tv_phone,tv_ka1,tv_ka2; ImageView iv_jia,iv_jian; RelativeLayout relative,relative01; private static final String PREF_NAME = "MyPrefs"; private static final String KEY_INPUT_TEXT = "inputText"; private static final String KEY_DATA1 = "data1"; private static final String KEY_TIPS_DATE = "tipsDate"; private static final String KEY_OPERATORS = "operators"; // 用于记录当前选中的按钮 private String selectedButton = "button1"; @Override protected int setLayout() { return R.layout.remind_fragment; } @Override protected void initView() { tv_operators = fvbi(R.id.tv_operators); tv_date = fvbi(R.id.tv_date); tv_remind_date = fvbi(R.id.tv_remind_date); tv_num = fvbi(R.id.tv_num); tv_operators = fvbi(R.id.tv_operators); tv_operators = fvbi(R.id.tv_operators); tv_phone = fvbi(R.id.tv_phone); iv_jia = fvbi(R.id.iv_jia); iv_jian = fvbi(R.id.iv_jian); tv_ka1 = fvbi(R.id.tv_ka1); tv_ka2 = fvbi(R.id.tv_ka2); relative = fvbi(R.id.relative); relative01 = fvbi(R.id.relative01); // 设置按钮标记 tv_ka1.setTag("button1"); tv_ka2.setTag("button2"); } @Override protected void initClick() { iv_jia.setOnClickListener(new OnMultiClickListener() { @Override public void onMultiClick(View v) { Intent intent = new Intent(getActivity(), AddActivity.class); // 将选中的按钮信息传递给下个页面 intent.putExtra("selectedButton", selectedButton); startActivityForResult(intent, REQUEST_CODE); } }); tv_ka1.setOnClickListener(new OnMultiClickListener() { @Override public void onMultiClick(View v) { String buttonId = (String) v.getTag(); handleAddButtonClick(buttonId); selectedButton = buttonId; } }); tv_ka2.setOnClickListener(new OnMultiClickListener() { @Override public void onMultiClick(View v) { String buttonId = (String) v.getTag(); handleAddButtonClick(buttonId); selectedButton = buttonId; } }); } @Override protected void initData() { if ("button1".equals(selectedButton)) { showData(card1Data); } else if ("button2".equals(selectedButton)) { showData(card2Data); } } private void handleAddButtonClick(String buttonId) { if ("button1".equals(buttonId)) { // 处理按钮1的添加逻辑 relative.setBackgroundResource(R.mipmap.img_ka1_bg); tv_ka1.setTextColor(ContextCompat.getColor(getContext(), R.color.anythink_022E6F)); tv_ka2.setTextColor(ContextCompat.getColor(getContext(), R.color.white)); } else if ("button2".equals(buttonId)) { // 处理按钮2的添加逻辑 relative.setBackgroundResource(R.mipmap.img_ka2_bg); tv_ka2.setTextColor(ContextCompat.getColor(getContext(), R.color.anythink_022E6F)); tv_ka1.setTextColor(ContextCompat.getColor(getContext(), R.color.white)); } } // 数据模型类 class CardData { String inputText; String data1; String tipsDate; String operators; } // 在 RemindFragment 类中添加成员变量 private CardData card1Data = new CardData(); private CardData card2Data = new CardData(); @Override public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) { // 获取返回的信息 String inputText = data.getStringExtra("trim"); String data1 = data.getStringExtra("data"); String tipsDate = data.getStringExtra("tips_date"); String operators = data.getStringExtra("operators"); String selectedButtons = data.getStringExtra("selectedButton"); if ("button1".equals(selectedButtons)) { card1Data.inputText = inputText; card1Data.data1 = data1; card1Data.tipsDate = tipsDate; card1Data.operators = operators; showData(card1Data); } else if ("button2".equals(selectedButtons)) { card2Data.inputText = inputText; card2Data.data1 = data1; card2Data.tipsDate = tipsDate; card2Data.operators = operators; showData(card2Data); } } } private void showData(CardData data) { if (data.inputText != null) { relative01.setVisibility(View.VISIBLE); } tv_phone.setText(data.inputText); tv_date.setText(data.data1); tv_remind_date.setText(data.tipsDate); tv_operators.setText(data.operators); } } package com.weishitechsub.mfhfllcx.fragment.remind; import android.content.Intent; import android.util.Log; import android.view.View; import android.widget.EditText; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import com.hfd.common.base.BaseActivity; import com.wdullaer.materialdatetimepicker.date.DatePickerDialog; import com.weishitechsub.mfhfllcx.MainActivity; import com.weishitechsub.mfhfllcx.R; import com.weishitechsub.mfhfllcx.utils.OnMultiClickListener; import com.weishitechsub.mfhfllcx.utils.PhoneNumberUtils; import com.weishitechsub.mfhfllcx.view.ProvincePickerSheet; import java.util.Arrays; import java.util.Calendar; public class AddActivity extends BaseActivity { ImageView iv_back; TextView tv_operators,tv_date,tv_monthly,tv_tips_date,tv_tips_time,tv_but; EditText ed_phone; private ProvincePickerSheet sheetOperators; private String operators,tips_date,tips_time,data; private String selectedButton; @Override protected int setLayout() { return R.layout.activity_add; } @Override protected void setView() { iv_back = fvbi(R.id.iv_back); ed_phone = fvbi(R.id.ed_phone); tv_operators = fvbi(R.id.tv_operators); tv_date = fvbi(R.id.tv_date); tv_monthly = fvbi(R.id.tv_monthly); tv_tips_date = fvbi(R.id.tv_tips_date); tv_tips_time = fvbi(R.id.tv_tips_time); tv_but = fvbi(R.id.tv_but); } @Override protected void setData() { // 获取传递过来的数据 selectedButton = getIntent().getStringExtra("selectedButton"); Log.i("11111111","selectedButton"+selectedButton); //运营商 sheetOperators = new ProvincePickerSheet(Arrays.asList(getResources().getStringArray(R.array.Operators)), operators -> { // 回调 this.operators = operators; tv_operators.setText(operators); }); } @Override protected void setClick() { iv_back.setOnClickListener(new OnMultiClickListener() { @Override public void onMultiClick(View v) { finish(); } }); tv_but.setOnClickListener(new OnMultiClickListener() { @Override public void onMultiClick(View v) { String trim = ed_phone.getText().toString().trim(); boolean isValid = PhoneNumberUtils.checkChineseMobile(trim); if (isValid) { // 将信息封装到 IntentIntent resultIntent = new Intent(); resultIntent.putExtra("trim",trim); resultIntent.putExtra("data",data); resultIntent.putExtra("tips_date",tips_date); resultIntent.putExtra("operators",operators); resultIntent.putExtra("selectedButton",selectedButton); // 设置返回结果 setResult(RESULT_OK, resultIntent); finish(); }else { Toast.makeText(mContext, "请输入有效手机号", Toast.LENGTH_SHORT).show(); } } }); tv_operators.setOnClickListener(new OnMultiClickListener() { @Override public void onMultiClick(View v) { sheetOperators.show(getSupportFragmentManager(), "OperatorsPickerSheet"); } }); tv_tips_date.setOnClickListener(new OnMultiClickListener() { @Override public void onMultiClick(View v) { // 获取当前日期 Calendar now = Calendar.getInstance(); DatePickerDialog dpd = DatePickerDialog.newInstance( (view, year, monthOfYear, dayOfMonth) -> { // 由于 Calendar 月份从 0 开始,这里将其转换为从 1 开始的月份 int actualMonth = monthOfYear + 1; // 处理选择的年份 tv_tips_date.setText(year + "-" + actualMonth + "-" + dayOfMonth); tips_date = tv_tips_date.getText().toString(); }, now.get(Calendar.YEAR), now.get(Calendar.MONTH), now.get(Calendar.DAY_OF_MONTH) ); // 显示日期选择对话框 dpd.show(getSupportFragmentManager(), "Datepickerdialog"); } }); //缴费日期 tv_date.setOnClickListener(new OnMultiClickListener() { @Override public void onMultiClick(View v) { // 获取当前日期 Calendar now = Calendar.getInstance(); DatePickerDialog dpd = DatePickerDialog.newInstance( (view, year, monthOfYear, dayOfMonth) -> { // 由于 Calendar 月份从 0 开始,这里将其转换为从 1 开始的月份 int actualMonth = monthOfYear + 1; // 处理选择的年份 tv_date.setText(year + "-" + actualMonth + "-" + dayOfMonth); data = tv_date.getText().toString(); }, now.get(Calendar.YEAR), now.get(Calendar.MONTH), now.get(Calendar.DAY_OF_MONTH) ); // 显示日期选择对话框 dpd.show(getSupportFragmentManager(), "Datepickerdialog"); } }); tv_tips_time.setOnClickListener(new OnMultiClickListener() { @Override public void onMultiClick(View v) { // 获取当前日期 Calendar now = Calendar.getInstance(); DatePickerDialog dpd = DatePickerDialog.newInstance( (view, year, monthOfYear, dayOfMonth) -> { // 由于 Calendar 月份从 0 开始,这里将其转换为从 1 开始的月份 int actualMonth = monthOfYear + 1; // 处理选择的年份 tv_tips_time.setText(year + "-" + actualMonth + "-" + dayOfMonth); tips_time = tv_tips_time.getText().toString(); }, now.get(Calendar.YEAR), now.get(Calendar.MONTH), now.get(Calendar.DAY_OF_MONTH) ); // 显示日期选择对话框 dpd.show(getSupportFragmentManager(), "Datepickerdialog"); } }); } } 如上代码我选中卡1点击加号跳转到addActivity页面添加卡1需要的数据再回传赋值,选中卡2点击加号跳转到addActivity页面添加卡2需要的数据再回传赋值,但是因为我想在同一个页面写逻辑,用的是一个布局我的卡1数据会被后面填的卡2数据覆盖
11-21
这是一个自己开发的Android 直接发送短信方法附上代码,Android 发短信功能,包括了对内容合法性的验证,发送完成弹出提示。自己开发的直接发送短信的方法:   private void sendSMS(String telNo,String smsStr,View v){    PendingIntent pi=    PendingIntent.getActivity(this, 0, new Intent(this,Sample_11_1.class), 0);    SmsManager sms=SmsManager.getDefault();    sms.sendTextMessage(telNo, null, smsStr, pi, null);    //短信发送成功给予提示    Toast.makeText(    Sample_11_1.this, //上下文    "恭喜你,短信发送成功!", //提示内容    5000 //信息显示时间    ).show();    v.setEnabled(true);//短信发送完成后恢复发送按钮的可用状态   }   对手机号码和短信内容的验证部分:   //获取输入的电话号码   EditText etTel=(EditText)findViewById(R.id.EditText02);   String telStr=etTel.getText().toString();   //获取输入的短信内容   EditText etSms=(EditText)findViewById(R.id.EditText01);   String smsStr=etSms.getText().toString();   //判断号码字符串是否合法   if(PhoneNumberUtils.isGlobalPhoneNumber(telStr)){//合法则发送短信    v.setEnabled(false);//短信发送完成前将发送按钮设置为不可用    sendSMS(telStr,smsStr,v);   }   else{//不合法则提示    Toast.makeText(    Sample_11_1.this, //上下文    "电话号码不符合格式!!!", //提示内容    5000//信息显示时间    ).show();   }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值