手把手教你如何在安卓平台上實現打電話發簡訊的功能

來源:互聯網
上載者:User

首發地址
http://www.eoeandroid.com/thread-228079-1-1.html

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 商務邏輯設計
if(myeditText.getText().length()>0{Intent myIntent=new Intent(Intent.ACTION_CALL,Uri.parse("tel:"+myeditText.getText().toString()));Phone.this.startActivity(myIntent);}String mobile=myEditText.getText().toString();String content=EditText2.getText().toString();SmsManager sms=SmsManager.getDefault();PendingIntent sentintent =PendingIntent.getBroadcast(SmsActivity.this,0, new Intent(), 0);

先來:

      

6 案例實現:

案例實現的部分重要代碼如下:1.首頁介面
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:background="@drawable/bg"android:orientation="vertical" > <Button android:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:layout_alignParentLeft="true"android:layout_marginBottom="165dp"android:layout_marginLeft="23dp"android:background="@drawable/button"android:text="打電話" /> <Button android:id="@+id/button2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignBaseline="@+id/button1"android:layout_alignBottom="@+id/button1"android:layout_alignParentRight="true"android:background="@drawable/button"android:text="發簡訊"

2.主介面activity

public class SmsAndPhoneActivity extends Activity { /** Called when the activity is first created. */Button button1,button2;   @Override  public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);   //根據ID尋找相應控制項 button1=(Button) findViewById(R.id.button1); button2=(Button) findViewById(R.id.button2);   //按鈕監聽事件 button1.setOnClickListener(new OnClickListener() {   @Overridepublic void onClick(View v) { // TODO Auto-generated method stub //跳轉到打電話頁面 Intent intent = new Intent(SmsAndPhoneActivity.this, Phone.class); startActivity(intent); } });   button2.setOnClickListener(new OnClickListener() {   @Overridepublic void onClick(View v) { // TODO Auto-generated method stub //跳轉到發簡訊頁面 Intent intent1=new Intent(SmsAndPhoneActivity.this, SmsActivity.class); startActivity(intent1); } }); } }

3.發簡訊介面activity

 

public class SmsActivity extends Activity{ @Override  public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.sms);   Button butsend=(Button) findViewById(R.id.butsend); final EditText myEditText=(EditText)findViewById(R.id.mobile); final EditText EditText2=(EditText)findViewById(R.id.content); butsend.setOnClickListener(new OnClickListener() {   @Overridepublic void onClick(View v) { // TODO Auto-generated method stub   String mobile=myEditText.getText().toString(); String content=EditText2.getText().toString(); SmsManager sms=SmsManager.getDefault(); PendingIntent sentintent =PendingIntent.getBroadcast(SmsActivity.this, 0, new Intent(), 0); try { if(content.length()>70) { List<String> msgs=sms.divideMessage(content); for(String msg:msgs) { sms.sendTextMessage(mobile, null, msg, sentintent, null);  } } else{   sms.sendTextMessage(mobile, null, content, sentintent, null); } } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } Toast.makeText(SmsActivity.this, "簡訊發送成功", 1000).show(); } });

4.打電話介面Activity

 

public class Phone extends Activity{ @Override  public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.phone);   final EditText myeditText=(EditText) findViewById(R.id.myedittext); Button butphone=(Button) findViewById(R.id.butphone);   butphone.setOnClickListener(new OnClickListener() {   @Overridepublic void onClick(View v) { // TODO Auto-generated method stub if(myeditText.getText().length()>0) { Intent myIntent=new Intent(Intent.ACTION_CALL,Uri.parse ("tel:"+myeditText.getText().toString())); Phone.this.startActivity(myIntent); } } }); } }

源碼下載:SmsAndPhone.zip

 
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.