Intent大全(一)─撥打電話篇
Intent我覺得是Android功能最多,最簡單又最雜亂的地方。
簡單的地方是他的程式通常都不多,短短幾行就能搞定。
雜亂的地方是他的功能實在是太多啦!
今天就來介紹一下很強大的Intent!
今日實作影片範例:
撥打電話的功能─
重要程式碼:
Uri uri =
Uri.parse("tel:xxxxxx");
Intent it = new Intent(Intent.ACTION_DIAL, uri);
startActivity(it);
Intent it = new Intent(Intent.ACTION_DIAL, uri);
startActivity(it);
Layout佈局
<?xml version="1.0" encoding="utf-8"?>
<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="com.example.nikeru8.phonecall.MainActivity">
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="call"
android:text="我要打電話" />
</RelativeLayout>
MainActivity.Java佈局
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void
onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void call(View view) {
Uri uri =
Uri.parse("tel:xxxxxx");
Intent it = new
Intent(Intent.ACTION_DIAL, uri);
startActivity(it);
}
}
完成囉!
短短幾行就搞定!
只是幫妳把畫面帶到撥打畫面,最速度的實作!
接下來講講進階版
按了按鈕自動幫妳撥出電話!示範影片:
這就稍微麻煩一點點了
兩個步驟:
1、 在AndroidManifest.xml中額外作設定。
2、 修改程式碼
STEP1:
加入以下兩行。
<uses-permission android:name="android.permission.CALL_PHONE"
/>
<uses-permission
android:name="android.permission.READ_PHONE_STATE" />
之後記得按下這個按鈕,匯入妳的設定!
STEP2:
Layout佈局我們不去改動她!
只改動按鈕onClick內的東西。
……其他程式碼省略………
public void call(View view) {
Intent it = new
Intent(Intent.ACTION_CALL);
Uri uri =
Uri.parse("tel:123456");
it.setData(uri);
//撥打電話
try {
startActivity(phoneIntent);
finish();
}
//撥打失敗的話,彈跳出失敗土司視窗
catch (android.content.ActivityNotFoundException ex) {
Toast.makeText(MainActivity.this,
"Call faild, please try again later.", Toast.LENGTH_SHORT).show();
}
}
……其他程式碼省略………
完成囉!
過程中可能會遇到的錯誤
1、
在下述程式碼中
Uri uri = Uri.parse("tel:123456");
tel:是務必加在前面的,不然會跳出土司視窗錯誤。(就是以下這段)
//撥打失敗的話,彈跳出失敗土司視窗
catch (android.content.ActivityNotFoundException ex) {
Toast.makeText(MainActivity.this,
"Call faild, please try again later.", Toast.LENGTH_SHORT).show();
}
}
2、
在進階版中,要使用到try-catch這個方法
如果不使用到try-catch 就會變成下面這種情況:
參考資料:
有問題都可以提出一起討論唷!
Intent
Intent大全(二)- googlemap應用、網頁連結、地圖作標、路徑規劃、簡訊 http://nikeru8.blogspot.tw/2016/06/intentgooglemap_21.html
沒有留言:
張貼留言