Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Andorid實現打電話發短信功能實例

Andorid實現打電話發短信功能實例

編輯:Android開發實例

 1 案例目的

本案例通過一個簡單通訊工具來鞏固android的activity、LinearLayout布局、基本控件Button、打電話發短信以及應用程序交互通信Intent的使用。本案例重點講解android中事件處理原理以及該原理在項目中的應用。 2 案例介紹 零距通這個通訊工具可以實現發短信打電話的功能,無論在天涯海角,只需使用零距通,讓你跟你的朋友,家人從此變成零距離無障礙溝通,零距通,讓你的生活從此零距離。 3 案例分析 本項目采用android2.3.3開發。由於該項目主要實現打電話發短信的功能,用Intent激活程序---電話與短信本篇中使用的 Intent 打電話程序中,Intent 的行為是 ACTION_DIAL,同時在 Intent 中傳遞被呼叫人的電話號碼。撥打電話的關鍵有兩個方面,首先,要在 AndroidManifest 中添加 uses-permission,並聲明android:name="android.permission.CALL_PHONE" 權限。由於打電話是屬於手機的底層服務,與用戶隱私及通話費用等話題息息相關,困此,程序必須取得權限。其次,通過自定義 Intent 對象,帶入“ACTION_CALL” 這個關鍵(Action),以及通過Uri.parse()的方法將用戶輸入電話號碼(Data)帶入,最後以 startActivity()方法,即可完成。要實現發短信的功能,必須要用到android系統中發短信的權限,即在AndoridManifest.xml中添加如下內容
<uses-permissionandroid:name=”android.permission.SEND_SMS”/> 

4 案例設計

單擊“發短信”,“打電話”按鈕時的事件處理流程如下:   (1)創建“發短信”,“打電話”按鈕事件源。   (2)事件源向點擊事件監聽器類注冊。   (3)當點擊事件源“發短信”,“打電話”按鈕時觸發事件並調用事件監聽器類中的onClick(View)方法處理業務邏輯。 5 業務邏輯設計

 

  1. if(myeditText.getText().length()>0{ 
  2. Intent myIntent=new Intent(Intent.ACTION_CALL,Uri.parse("tel:"+myeditText.getText().toString())); 
  3. Phone.this.startActivity(myIntent); 
  4. String mobile=myEditText.getText().toString(); 
  5. String content=EditText2.getText().toString(); 
  6. SmsManager sms=SmsManager.getDefault(); 
  7. PendingIntent sentintent =PendingIntent.getBroadcast(SmsActivity.this,0, new Intent(), 0); 

 

先來效果圖:

      

6 案例實現:

案例實現的部分重要代碼如下: 1.首頁界面

 

 

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  3. android:layout_width="fill_parent" 
  4. android:layout_height="fill_parent" 
  5. android:background="@drawable/bg" 
  6. android:orientation="vertical" >  
  7. <Button  
  8. android:id="@+id/button1" 
  9. android:layout_width="wrap_content" 
  10. android:layout_height="wrap_content" 
  11. android:layout_alignParentBottom="true" 
  12. android:layout_alignParentLeft="true" 
  13. android:layout_marginBottom="165dp" 
  14. android:layout_marginLeft="23dp" 
  15. android:background="@drawable/button" 
  16. android:text="打電話" />  
  17. <Button  
  18. android:id="@+id/button2" 
  19. android:layout_width="wrap_content" 
  20. android:layout_height="wrap_content" 
  21. android:layout_alignBaseline="@+id/button1" 
  22. android:layout_alignBottom="@+id/button1" 
  23. android:layout_alignParentRight="true" 
  24. android:background="@drawable/button" 
  25. android:text="發短信" 

2.主界面activity

 

  1. public class SmsAndPhoneActivity extends Activity {  
  2. /** Called when the activity is first created. */ 
  3. Button button1,button2;  
  4.    
  5. @Override 
  6.    
  7. public void onCreate(Bundle savedInstanceState) {  
  8. super.onCreate(savedInstanceState);  
  9. setContentView(R.layout.main);  
  10.    
  11. //根據ID查找相應控件  
  12. button1=(Button) findViewById(R.id.button1);  
  13. button2=(Button) findViewById(R.id.button2);  
  14.    
  15. //按鈕監聽事件  
  16. button1.setOnClickListener(new OnClickListener() {  
  17.    
  18. @Override 
  19. public void onClick(View v) {  
  20. // TODO Auto-generated method stub  
  21. //跳轉到打電話頁面  
  22. Intent intent = new Intent(SmsAndPhoneActivity.this,  
  23. Phone.class);  
  24. startActivity(intent);  
  25. }  
  26. });  
  27.    
  28. button2.setOnClickListener(new OnClickListener() {  
  29.    
  30. @Override 
  31. public void onClick(View v) {  
  32. // TODO Auto-generated method stub  
  33. //跳轉到發短信頁面  
  34. Intent intent1=new Intent(SmsAndPhoneActivity.this,  
  35. SmsActivity.class);  
  36. startActivity(intent1);  
  37. }  
  38. });  
  39. }  

3.發短信界面activity

 

  1. public class SmsActivity extends Activity{  
  2. @Override 
  3.    
  4. public void onCreate(Bundle savedInstanceState) {  
  5. super.onCreate(savedInstanceState);  
  6. setContentView(R.layout.sms);  
  7.    
  8. Button butsend=(Button) findViewById(R.id.butsend);  
  9. final EditText myEditText=(EditText)findViewById(R.id.mobile);  
  10. final EditText EditText2=(EditText)findViewById(R.id.content);  
  11. butsend.setOnClickListener(new OnClickListener() {  
  12.    
  13. @Override 
  14. public void onClick(View v) {  
  15. // TODO Auto-generated method stub  
  16.    
  17. String mobile=myEditText.getText().toString();  
  18. String content=EditText2.getText().toString();  
  19. SmsManager sms=SmsManager.getDefault();  
  20. PendingIntent sentintent =PendingIntent.getBroadcast(SmsActivity.this,  
  21. , new Intent(), 0);  
  22. try {  
  23. if(content.length()>70)  
  24. {  
  25. List<String> msgs=sms.divideMessage(content);  
  26. for(String msg:msgs)  
  27. {  
  28. sms.sendTextMessage(mobile, null, msg, sentintent, null);   
  29. }  
  30. }  
  31. else 
  32. {  
  33.    
  34. sms.sendTextMessage(mobile, null, content, sentintent, null);  
  35. }  
  36. } catch (Exception e) {  
  37. // TODO: handle exception  
  38. e.printStackTrace();  
  39. }  
  40. Toast.makeText(SmsActivity.this, "短信發送成功", 1000).show();  
  41. }  
  42. }); 

4.打電話界面Activity

 

  1. public class Phone extends Activity{  
  2. @Override 
  3.    
  4. public void onCreate(Bundle savedInstanceState) {  
  5. super.onCreate(savedInstanceState);  
  6. setContentView(R.layout.phone);  
  7.    
  8. final EditText myeditText=(EditText) findViewById(R.id.myedittext);  
  9. Button butphone=(Button) findViewById(R.id.butphone);  
  10.    
  11. butphone.setOnClickListener(new OnClickListener() {  
  12.    
  13. @Override 
  14. public void onClick(View v) {  
  15. // TODO Auto-generated method stub  
  16. if(myeditText.getText().length()>0)  
  17. {  
  18. Intent myIntent=new Intent(Intent.ACTION_CALL,Uri.parse  
  19. ("tel:"+myeditText.getText().toString()));  
  20. Phone.this.startActivity(myIntent);  
  21. }  
  22. }  
  23. });  
  24. }  

源碼下載:SmsAndPhone.zip

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved