[android] android 实现打电话和发短信
一、mainactivity:
package com.xwolf.phone; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainActivity extends Activity implements OnClickListener { private Button phone; private Button sms ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); /* * 注意加载的先后顺序,一定是activity加载完成后再加载View * */ setContentView(R.layout.activity_main); //获取指定的按钮 phone = (Button) findViewById(R.id.main_btn_call); sms = (Button) findViewById(R.id.main_btn_sms); //绑定点击事件 phone.setOnClickListener(this); sms.setOnClickListener(this); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public void onClick(View v) { int id = v.getId(); switch(id){ case R.id.main_btn_call: //到拨打电话的activity Intent intent = new Intent(this,CallActivity.class); startActivity(intent); //setContentView(R.layout.activity_call); break; case R.id.main_btn_sms: //到发送短信的activity //setContentView(R.layout.activity_sms); Intent intent_send = new Intent(this,SmsActivity.class); startActivity(intent_send); break; } } }
二、拨打电话:
package com.xwolf.phone; import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class CallActivity extends Activity{ //private EditText editText; //private Button call; //private Button back; private String TAG="CallActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_call); final EditText editText=(EditText) findViewById(R.id.call_edt_number); Button call = (Button) findViewById(R.id.call_btn_call); Button back = (Button) findViewById(R.id.call_btn_back); call.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { String number = editText.getText().toString().trim(); if (number.length()<1){ //Toast.makeText(this, "电话不能为空", Toast.LENGTH_LONG); Toast.makeText(CallActivity.this,"电话不能为空", Toast.LENGTH_LONG).show();; return ; } Log.i(TAG,"拨打电话"); //拨打电话 Intent intent= new Intent(); intent.setData(Uri.parse("tel:"+number)); intent.setAction(Intent.ACTION_CALL); startActivity(intent); } }); back.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Log.w(TAG,"返回上一个页面.."); //结束当前activity finish(); } }); } /*@SuppressLint("ShowToast") @Override public void onClick(View v) { String number = editText.getText().toString().trim(); if (number.length()<1){ Toast.makeText(this, "电话不能为空", Toast.LENGTH_LONG); return ; } switch(v.getId()){ case R.id.call_btn_call: Log.i("CallActivity","拨打电话"); //拨打电话 Intent intent= new Intent(); intent.setAction(Intent.ACTION_CALL); intent.setData(Uri.parse("tel:"+number)); startActivity(intent); break; case R.id.call_btn_back: Log.w("CallActivity","返回上一个页面.."); //结束当前activity CallActivity.this.finish(); break; } }*/ }
三、发送短信:
package com.xwolf.phone; import android.app.Activity; import android.os.Bundle; import android.telephony.SmsManager; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class SmsActivity extends Activity implements OnClickListener { private EditText number; private EditText content ; private Button send; private Button back; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_sms); number=(EditText) findViewById(R.id.sms_edt_number); content=(EditText) findViewById(R.id.sms_edt_content); send = (Button) findViewById(R.id.sms_btn_send); back = (Button) findViewById(R.id.sms_btn_back); send.setOnClickListener(this); back.setOnClickListener(this); } @Override public void onClick(View v) { int id = v.getId(); switch(id){ case R.id.sms_btn_back: //返回 //onKeyDown(KeyEvent.KEYCODE_BACK, null); SmsActivity.this.finish(); break; case R.id.sms_btn_send: String phone = number.getText().toString().trim(); if (phone.length()<1){ Toast.makeText(this, "电话不能为空", Toast.LENGTH_LONG).show(); return ; } String text = content.getText().toString().trim(); if (text.length()<1){ Toast.makeText(this, "短信内容不能为空", Toast.LENGTH_LONG).show(); return ; } //利用系统内置短信界面发送信息 /* Intent intent = new Intent(); intent.setData(Uri.parse("smsto:"+phone)); intent.putExtra("sms_body",text); intent.setAction(Intent.ACTION_SENDTO); startActivity(intent);*/ SmsManager smsManager = SmsManager.getDefault(); //据说有字数限制,需要拆分,此处不考虑 //smsManager.divideMessage(text) smsManager.sendTextMessage(phone, null, text, null, null); Toast.makeText(this, "短信发送成功", Toast.LENGTH_LONG).show(); //返回 finish(); break; } } }
第一个比较简单的功能中遇到的问题:
1.先启动activity后才可以初始化获取指定的View.否则出现指定的类不存在的异常
貌似是这个 Error generating final archive: java.io.FileNotFoundException: E:\workspace\android\xxx\bin\resources.ap_ does not exist 。
2.分支activity要在AndroidManifest.xml中全部添加其中。
3.添加拨打电话和发送短信的权限。
<!--添加打电话的权限 --> <uses-permission android:name="android.permission.CALL_PHONE"/> <!-- 发送短信 --> <uses-permission android:name="android.permission.SEND_SMS"/>
4.拨打电话和发送短信的方式比较特别:
//拨打电话 Intent intent= new Intent(); intent.setData(Uri.parse("tel:"+number)); intent.setAction(Intent.ACTION_CALL); startActivity(intent);
//发送短信 Intent intent = new Intent(); intent.setData(Uri.parse("smsto:"+phone)); intent.putExtra("sms_body",text); intent.setAction(Intent.ACTION_SENDTO); startActivity(intent);
当然不是真正的发送短信,只是跳转到系统内置的短信发送界面。

浙公网安备 33010602011771号