Android學習筆記(二)之電話撥號器

Android學習筆記(二)之電話撥號器

目前Android已經在只能手機市場已經具有強大的霸主地位,也吸引了越來越多的追捧者。Android的學習也越來越火。但是,報名費用確實大多人望而卻步

一、新建專案CallPhone

1.1、建立專案

 

二、設定介面與專案名稱

2.1、更改專案名稱

res/values下strings.xml中更改app_name電話拔號器

string.xml


<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">電話拔號器</string>
<string name="action_settings">Settings</string>
<string name="hello_world">Hello world!</string>
<string name="dail">拔打電話</string>
<string name="defaul_prop">請輸入電話號碼</string>
</resources>

2.2、設定檔案框與按鍵


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<EditText
android:id="@ id/et_number"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="phone" 
android:hint="@string/defaul_prop">
<requestFocus />
</EditText>
<Button
android:id="@ id/btn_dail"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_below="@ id/et_number"
android:text="@string/dail" />
</RelativeLayout>

三、寫java程式碼

3.1、MainActivity.java


package com.pb.dial;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.app.Activity;
import android.content.Intent;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//根據ID找到ID,拔號按鍵的ID
Button bt_dail= (Button) findViewById(R.id.btn_dail);
//為按鍵設定點選事件
bt_dail.setOnClickListener(new MyOnClickListener());
}
//單擊監聽事件
private class MyOnClickListener implements OnClickListener{
/**
* 單擊按鍵被點選時呼叫的方法
*/
@Override
public void onClick(View v) {
//取出輸入框中的內容
//先找到ID
EditText et_number=(EditText) MainActivity.this.findViewById(R.id.et_number);
//根據ID出內容
String phoneNumber=et_number.getText().toString();
//意圖,想做什麼事
Intent intent=new Intent();
//開始拔打電話
intent.setAction(Intent.ACTION_CALL);
//設定動作內容 uri:統一資源識別符號,url的型別 統一資源定位符
intent.setData(Uri.parse("tel:" phoneNumber));
//開啟新的介面
startActivity(intent);
}
}
}

 或者


package com.pb.dial;
import android.net.Uri;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import android.app.Activity;
import android.content.Intent;
public class MainActivity extends Activity implements OnClickListener{
private Button bt_dail;
private EditText et_number;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//根據ID找到ID,拔號按鍵的ID
bt_dail= (Button) findViewById(R.id.btn_dail);
//取出輸入框中的內容
//先找到ID
//根據ID出內容
et_number=(EditText) MainActivity.this.findViewById(R.id.et_number);
//為按鍵設定點選事件
bt_dail.setOnClickListener(this);
}
@Override
public void onClick(View v) {
String phoneNumber=et_number.getText().toString().trim();
//判斷內容是否為空 TextUtils是個工具類
if(TextUtils.isEmpty(phoneNumber)){
Toast.makeText(this, "電話號碼不能為空", Toast.LENGTH_LONG).show();
//如果是內容類請將this改為MainActivity.this
return;
}
//意圖,想做什麼事
Intent intent=new Intent();
//開始拔打電話
intent.setAction(Intent.ACTION_CALL);
//設定動作內容 uri:統一資源識別符號,url的型別 統一資源定位符
intent.setData(Uri.parse("tel:" phoneNumber));
//開啟新的介面
startActivity(intent);
}
//單擊監聽事件
/* private class MyOnClickListener implements OnClickListener{
*//**
* 單擊按鍵被點選時呼叫的方法
*//*
@Override
public void onClick(View v) {
//取出輸入框中的內容
//先找到ID
EditText et_number=(EditText) MainActivity.this.findViewById(R.id.et_number);
//根據ID出內容
String phoneNumber=et_number.getText().toString();
//意圖,想做什麼事
Intent intent=new Intent();
//開始拔打電話
intent.setAction(Intent.ACTION_CALL);
//設定動作內容 uri:統一資源識別符號,url的型別 統一資源定位符
intent.setData(Uri.parse("tel:" phoneNumber));
//開啟新的介面
startActivity(intent);
}
}*/
}

3.2、新增許可權


<!--新增許可權 -->
<uses-permission android:name="android.permission.CALL_PHONE"/>

3.3、執行

 

下面給大家分享一段程式碼 ————android電話拔號器和簡訊傳送器

android電話拔號器

因為應用要使用手機的電話服務,所以要在清單檔案AndroidManifest.xml中新增電話服務許可權:


<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="cn.itcast.action"
android:versionCode="1"
android:versionName="1.0">
略....
<uses-sdk android:minSdkVersion=“6" />
<uses-permission android:name="android.permission.CALL_PHONE"/>
</manifest>

介面佈局:


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TextView 
android:layout_width="fill_parent" android:layout_height="wrap_content" 
android:text="@string/inputmobile"/>
<EditText android:layout_width="fill_parent" android:layout_height="wrap_content"
android:id="@ id/mobile"/>
<Button android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="@string/button"
android:id="@ id/button"/>
</LinearLayout>

LinearLayout (線性佈局)、AbsoluteLayout(絕對佈局)、RelativeLayout(相對佈局)、TableLayout(表格佈局)、FrameLayout(幀佈局)

Activity:


public class DialerAction extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button = (Button)findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener(){
public void onClick(View v) {
EditText editText = (EditText)findViewById(R.id.mobile);
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:"  editText.getText()));
DialerAction.this.startActivity(intent);
}
});
}
}

簡訊傳送器

因為應用要使用手機的簡訊服務,所以要在清單檔案AndroidManifest.xml中新增簡訊服務許可權:


<uses-permission android:name="android.permission.SEND_SMS"/>

介面佈局:


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical“ android:layout_width="fill_parent“ android:layout_height="fill_parent" >
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content"
android:text="@string/inputmobile"/>
<EditText android:layout_width="fill_parent" android:layout_height="wrap_content"
android:id="@ id/mobile"/>
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content"
android:text="@string/content"/>
<EditText android:layout_width="fill_parent" android:layout_height="wrap_content"
android:minLines="3"
android:id="@ id/content"/>
<Button android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="@string/button"
android:id="@ id/button"/>
</LinearLayout>

Activity主要程式碼:


String mobile = mobileView.getText().toString();
String content = contentView.getText().toString();
SmsManager smsManager = SmsManager.getDefault();
PendingIntent sentIntent = PendingIntent.getBroadcast(SMSSender.this, 0, new Intent(), 0);
if(content.length()>70){//如果字數超過70,需拆分成多條簡訊傳送
List<String> msgs = smsManager.divideMessage(content);
for(String msg : msgs){
smsManager.sendTextMessage(mobile, null, msg, sentIntent, null);
//最後二個引數為簡訊已傳送的廣播意圖,最後一個引數為簡訊對方已收到簡訊的廣播意圖
}
}else{          
smsManager.sendTextMessage(mobile, null, content, sentIntent, null);
}
Toast.makeText(SMSSender.this, "簡訊傳送完成", Toast.LENGTH_LONG).show();

您可能感興趣的文章:

Android電話撥號器例項詳解Android簡易電話撥號器例項詳解Android實現簡單的撥號器功能Android開發之電話撥號器和簡訊傳送器實現方法Android開發之電話撥號器例項詳解Android電話撥號器實現方法Android 2.3 撥號上網流程從原始碼角度進行分析Android Studio Intent隱式啟動,發簡訊,撥號,打電話,訪問網頁等例項程式碼Android程式設計簡單實現撥號器功能的方法