Android应用开发笔记(1):调用打电话和发短信、收短信接口、发Email

大憨熊 提交于 2020-03-14 01:03:26

Android应用开发笔记(1)

调用打电话和发短信、收短信接口、发Email

 

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

先看代码效果截图:


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

[java] view plaincopy

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, nullnull);  

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 代码:

[xhtml] view plaincopy

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 代码:

[java] view plaincopy

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. }  

AndroidManifest.xml中权限、activity和receiver的设定:

[java] view plaincopy

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 代码片段:

[java] view plaincopy

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. });  

本文来自 http://blog.csdn.net/xjanker2

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!