編輯: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 業務邏輯設計
- 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() {
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
- //跳轉到打電話頁面
- Intent intent = new Intent(SmsAndPhoneActivity.this,
- Phone.class);
- startActivity(intent);
- }
- });
- button2.setOnClickListener(new OnClickListener() {
- @Override
- public 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() {
- @Override
- public 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,
- , 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() {
- @Override
- public 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
前言 之前因為項目需求,其中使用到了圖片的單擊顯示取消,圖片平移縮放功能,昨天突然想再加上圖片的旋轉功能,在網上看了很多相關的例子,可是沒看到能同時實現我想要的功
在Android上開發一些小應用既可以積累知識又可以增加樂趣,與任務式開發不同
一、 實現拍照、選擇圖片並裁剪圖片效果 按照之前博客的風格,首先看下實現效果。 二、 uCrop項目應用 想起之前看到
本文實例講述了Android4.X中SIM卡信息初始化過程詳解。分享給大家供大家參考,具體如下: Phone 對象初始化的過程中,會加載SIM卡的部分數據信息,這