Android开发之调用(Call, Dial, SMSManager, Broadcast, Em

打电话和发短信可以说是最核心的应用了,本文就来阐述它的调用方法。可以分为直接调用--直接电话或短信发出,已经间接调用--进入拨号或短信撰写页面,等待用户确认内容后由用户发出.
先看代码效果截图:
 

1.jpg

先编写主界面Activaty,创建类CallAndSms作为为默认启动页
 

  1. package jtapp.callandsms;
     

  2.  
  3. import java.util.List;
     

  4.  
  5. import android.app.Activity;
     
  6. import android.content.Intent;
     
  7. import android.net.Uri;
     
  8. import android.os.Bundle;
     
  9. import android.telephony.SmsManager;
     
  10. import android.view.View;
     
  11. import android.view.View.OnClickListener;
     
  12. import android.widget.Button;
     
  13. import android.widget.Toast;
     

  14.  
  15. public class CallAndSms extends Activity {
     
  16.     /** Called when the activity is first created. */
     
  17.     @Override
     
  18.     public void onCreate(Bundle savedInstanceState) {
     
  19.         super.onCreate(savedInstanceState);
     
  20.         setContentView(R.layout.main);
     
  21.       
     
  22.         setComponent();
     
  23.     }
     
  24.    
     
  25.         private void setComponent() {
     
  26.                 Button bt1 = (Button) findViewById(R.id.Button01);
     
  27.                 bt1.setOnClickListener(new OnClickListener() {
     
  28.                         @Override
     
  29.                         public void onClick(View v) {
     
  30.                                 Intent intent = new Intent(
     
  31.                                                 Intent.ACTION_CALL, Uri.parse("tel:10010"));
     
  32.                                 startActivity(intent);
     
  33.                         }
     
  34.                 });
     
  35.                 Button bt2 = (Button) findViewById(R.id.Button02);
     
  36.                 bt2.setOnClickListener(new OnClickListener() {
     
  37.                         @Override
     
  38.                         public void onClick(View v) {
     
  39.                                 String smsContent = "102";
     
  40.                                 // note: SMS must be divided before being sent  
     
  41.                                 SmsManager sms = SmsManager.getDefault();
     
  42.                                 List<String> texts = sms.divideMessage(smsContent);
     
  43.                                 for (String text : texts) {
     
  44.                                         sms.sendTextMessage("10010", null, text, null, null);
     
  45.                                 }
     
  46.                                 // note: not checked success or failure yet
     
  47.                                 Toast.makeText(
     
  48.                                                 CallAndSms.this,
     
  49.                                                 "短信已发送",
     
  50.                                                 Toast.LENGTH_SHORT ).show();
     
  51.                         }
     
  52.                 });
     
  53.                
     
  54.                 Button bt3 = (Button) findViewById(R.id.Button03);
     
  55.                 bt3.setOnClickListener(new OnClickListener() {
     
  56.                         @Override
     
  57.                         public void onClick(View v) {
     
  58.                                 Intent intent = new Intent(
     
  59.                                                 Intent.ACTION_DIAL, Uri.parse("tel:10010"));
     
  60.                                 startActivity(intent);
     
  61.                         }
     
  62.                 });
     
  63.                 Button bt4 = (Button) findViewById(R.id.Button04);
     
  64.                 bt4.setOnClickListener(new OnClickListener() {
     
  65.                         @Override
     
  66.                         public void onClick(View v) {
     
  67.                                 Uri uri = Uri.parse("smsto:10010");        
     
  68.                                 Intent it = new Intent(Intent.ACTION_SENDTO, uri);        
     
  69.                                 it.putExtra("sms_body", "102");        
     
  70.                                 startActivity(it);
     
  71.                         }
     
  72.                 });
     
  73.         }
     
  74. }
复制代码


主界面ui定义 main.xml 代码:
AndroidManifest.xml中权限、activity和receiver的设定:

 

  1. <?xml version="1.0" encoding="utf-8"?>
     
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     
  3.         android:orientation="vertical" android:layout_width="fill_parent"
     
  4.         android:layout_height="fill_parent" android:gravity="center">
     
  5.         <TextView android:layout_width="fill_parent"
     
  6.                 android:layout_height="wrap_content" android:text="Direct Method:"
     
  7.                 android:gravity="center" />
     
  8.         <Button android:text="拨打10010客服电话" android:id="@+id/Button01"
     
  9.                 android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
     
  10.         <Button android:text="短信10010查余额" android:id="@+id/Button02"
     
  11.                 android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
     
  12.         <TextView android:text="InDirect Method:" android:id="@+id/TextView01"
     
  13.                 android:layout_width="wrap_content" android:layout_height="wrap_content" />
     
  14.         <Button android:text="拨打10010客服电话" android:id="@+id/Button03"
     
  15.                 android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
     
  16.         <Button android:text="短信10010查余额" android:id="@+id/Button04"
     
  17.                 android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
     
  18. </LinearLayout>
复制代码

用于监听短信到来的Broadcast消息的文件,
 

ReceiverSMS.java 代码:
  1. package jtapp.callandsms;
     

  2.  
  3. import android.content.BroadcastReceiver;
     
  4. import android.content.Context;
     
  5. import android.content.Intent;
     
  6. import android.os.Bundle;
     
  7. import android.telephony.SmsMessage;
     
  8. import android.widget.Toast;
     

  9.  
  10. public class ReceiverSMS extends BroadcastReceiver {
     

  11.  
  12.         @Override
     
  13.         public void onReceive(Context context, Intent intent) {
     
  14.                 if (intent.getAction().equals(
     
  15.                                 "android.provider.Telephony.SMS_RECEIVED")) {
     
  16.                         StringBuilder sb = new StringBuilder();
     
  17.                         Bundle bundle = intent.getExtras();
     
  18.                         if (bundle != null) {
     
  19.                                 Object[] pdus = (Object[]) bundle.get("pdus");
     
  20.                                 SmsMessage[] msgs = new SmsMessage[pdus.length];
     
  21.                                 for (int i = 0; i < pdus.length; i++) {
     
  22.                                         msgs[i] = SmsMessage
     
  23.                                                 .createFromPdu((byte[]) pdus[i]);
     
  24.                                 }
     
  25.                                 for (SmsMessage s : msgs) {
     
  26.                                         sb.append("收到来自");
     
  27.                                         sb.append(s.getDisplayOriginatingAddress());
     
  28.                                         sb.append("的SMS, 内容:");
     
  29.                                         sb.append(s.getDisplayMessageBody());
     
  30.                                 }
     
  31.                                 Toast.makeText(
     
  32.                                                 context,
     
  33.                                                 "收到了短消息: " + sb.toString(),
     
  34.                                                 Toast.LENGTH_LONG).show();
     
  35.                         }
     
  36.                
     
  37.                 }
     
  38.         }
     
  39. }
     
  40.  
复制代码

 

  1. <?xml version="1.0" encoding="utf-8"?>
     
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     
  3.         package="jtapp.callandsms" android:versionCode="1" android:versionName="1.0">
     
  4.         <application android:icon="@drawable/icon" android:label="@string/app_name"
     
  5.                 android:debuggable="true">
     
  6.                 <activity android:name=".CallAndSms" android:label="@string/app_name">
     
  7.                         <intent-filter>
     
  8.                                 <action android:name="android.intent.action.MAIN" />
     
  9.                                 <category android:name="android.intent.category.LAUNCHER" />
     
  10.                         </intent-filter>
     
  11.                 </activity>
     
  12.                 <receiver android:name=".ReceiverSMS" android:enabled="true">
     
  13.                         <intent-filter>
     
  14.                                 <action android:name="android.provider.Telephony.SMS_RECEIVED" />
     
  15.                         </intent-filter>
     
  16.                 </receiver>
     
  17.         </application>
     
  18.         <uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>
     
  19.         <uses-permission android:name="android.permission.SEND_SMS"></uses-permission>
     
  20.         <uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
     
  21. </manifest>
复制代码

补充,发Email 代码片段:

  1.   //Email
     
  2.                 Button bt5 = (Button) findViewById(R.id.Button05);
     
  3.                 bt5.setOnClickListener(new OnClickListener() {
     
  4.                         @Override
     
  5.                         public void onClick(View v) {
     
  6.                                 // Setup the recipient in a String array
     
  7.                                 String[] mailto = { "noam@gmail.com" };
     
  8.                                 // Create a new Intent to send messages
     
  9.                                 Intent sendIntent = new Intent(Intent.ACTION_SEND);
     
  10.                                 // Write the body of theEmail
     
  11.                                 String emailBody = "You're password is: ";
     
  12.                                 // Add attributes to the intent
     
  13.                                 //sendIntent.setType("text/plain"); // use this line for testing
     
  14.                                                                                                         // in the emulator
     
  15.                                 sendIntent.setType("message/rfc822"); // use this line for testing
     
  16.                                                                                                                 // on the real phone
     
  17.                                 sendIntent.putExtra(Intent.EXTRA_EMAIL, mailto);
     
  18.                                 sendIntent.putExtra(Intent.EXTRA_SUBJECT, "Your Password");
     
  19.                                 sendIntent.putExtra(Intent.EXTRA_TEXT, emailBody);
     
  20.                                 startActivity(sendIntent);
     
  21.                         }
     
  22.                 });
复制代码
公司地址:广州市番禺区亚运东路56号602室 电话:18929558018传真:020-84647115
版权所有:深圳市翡之翠文化传播有限公司 客户邮箱:h91708@163.COM

©2012 粤ICP备12043775号


技术支持:趋向互动
分享按钮