Android cung cấp người lập trình android các ứng dụng đã xây dựng sẵn cho Phone Call, trong một số tình huống chúng ta có thể cần tạo một Phone Call thông qua ứng dụng của chúng ta. Điều này có thể dễ dàng được thực hiện bằng việc sử dụng Implicit Intent với các Action thích hợp. Bạn cũng có thể sử dụng các lớp PhoneStateListener và TelephonyManager để giám sát các thay đổi trong một số trạng thái đàm thoại trên thiết bị.

Chương này liệt kê tất cả các bước đơn giản để tạo một ứng dụng mà có thể được sử dụng để tạo một Phone Call. Bạn có thể sử dụng Android Intent để tạo phone call bằng cách gọi tính năng Phone Call đã xây dựng sẵn của Android. Phần tiếp sẽ giải thích cho bạn các phần khác nhau của đối tượng Intent mà cần thiết để tạo một Call.


Đối tượng Intent: Action để tạo Phone Call


Bạn sẽ sử dụng ACTION_CALL để kích hoạt tính năng phone call có sẵn trong thiết bị Android. Sau đây là cú pháp cơ bản để tạo một Intent với ACTION_CALL.Intent phoneIntent = new Intent(Intent.ACTION_CALL);
Bạn có thể sử dụng ACTION_DIAL thay cho ACTION_CALL. Trong trường hợp này bạn sẽ có tùy chọn để sửa đổi phone number trước khi tạo một call thay cho việc tạo một direct call. Đối tượng Intent: Dữ liệu/Kiểu để tạo Phone Call
Để tạo một phone call tại một số 91-000-000-0000 đã cho, bạn cần xác định tel:dạng URI sử dụng phương thức setData() như sau:
phoneIntent.setData(Uri.parse("tel:91-000-000-0000"));
Điểm thú vị là, để tạo một phone call, bạn không cần xác định bất cứ Extra Data hoặc Data Type nào.

Ví dụ

Sau đây là nội dung của Main Activity file đã được sửa đổi: src/MainActivity.java.
package com.example.saira_000.myapplication;import android.app.Activity;import android.content.Intent;import android.net.Uri;import android.support.v7.app.ActionBarActivity;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.widget.Button;import android.widget.RadioButton;import android.widget.RadioGroup;import android.widget.Toast;public class MainActivity extends Activity {
  Button b1;   @Override   protected void onCreate(Bundle savedInstanceState) {      super.onCreate(savedInstanceState);      setContentView(R.layout.activity_main);      b1=(Button)findViewById(R.id.button);      call();   }     private void call() {      Intent in=new Intent(Intent.ACTION_CALL,Uri.parse("0000000000"));      try{         startActivity(in);      }            catch (android.content.ActivityNotFoundException ex){         Toast.makeText(getApplicationContext(),"yourActivity is not founded",Toast.LENGTH_SHORT).show();      }   }     @Override   public boolean onCreateOptionsMenu(Menu menu) {      // Inflate the menu; this adds items to the action bar if it is present.      getMenuInflater().inflate(R.menu.menu_main, menu);      return true;   }     @Override   public boolean onOptionsItemSelected(MenuItem item) {      // Handle action bar item clicks here. The action bar will      // automatically handle clicks on the Home/Up button, so long      // as you specify a parent activity in AndroidManifest.xml.            int id = item.getItemId();            //noinspection SimplifiableIfStatement      if (id == R.id.action_settings) {         return true;      }      return super.onOptionsItemSelected(item);   } }   protected void onCreate(Bundle savedInstanceState) {      super.onCreate(savedInstanceState);      setContentView(R.layout.activity_main);      b1=(Button)findViewById(R.id.button);      call();   }     private void call() {      Intent in=new Intent(Intent.ACTION_CALL,Uri.parse("0000000000"));      try{         startActivity(in);      }            catch (android.content.ActivityNotFoundException ex){         Toast.makeText(getApplicationContext(),"yourActivity is not founded",Toast.LENGTH_SHORT).show();      }   }     @Override   public boolean onCreateOptionsMenu(Menu menu) {      // Inflate the menu; this adds items to the action bar if it is present.      getMenuInflater().inflate(R.menu.menu_main, menu);      return true;   }     @Override   public boolean onOptionsItemSelected(MenuItem item) {      // Handle action bar item clicks here. The action bar will      // automatically handle clicks on the Home/Up button, so long      // as you specify a parent activity in AndroidManifest.xml.            int id = item.getItemId();            //noinspection SimplifiableIfStatement      if (id == R.id.action_settings) {         return true;      }      return super.onOptionsItemSelected(item);   }}
Sau đây là nội dung của res/layout/activity_main.xml file 


<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:paddingLeft="@dimen/activity_horizontal_margin"
  android:paddingRight="@dimen/activity_horizontal_margin"
  android:paddingTop="@dimen/activity_vertical_margin"
  android:paddingBottom="@dimen/activity_vertical_margin"
  tools:context=".MainActivity">

  <TextView
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="Drag and Drop Example"
     android:id="@+id/textView"
     android:layout_alignParentTop="true"
     android:layout_centerHorizontal="true"
     android:textSize="30dp" />
   
  <TextView
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="Tutorials Point"
     android:id="@+id/textView2"
     android:layout_below="@+id/textView"
     android:layout_centerHorizontal="true"
     android:textSize="30dp"
     android:textColor="#ff14be3c" />
   
  <ImageView
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:id="@+id/imageView"
     android:src="@drawable/abc"
     android:layout_marginTop="48dp"
     android:layout_below="@+id/textView2"
     android:layout_centerHorizontal="true" />
   
  <Button
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="Call"
     android:id="@+id/button"
     android:layout_below="@+id/imageView"
     android:layout_alignRight="@+id/textView2"
     android:layout_alignEnd="@+id/textView2"
     android:layout_marginTop="54dp"
     android:layout_alignLeft="@+id/imageView"
     android:layout_alignStart="@+id/imageView" />
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<resources>
  <string name="app_name">My Application</string>
  <string name="hello_world">Hello world!</string>
  <string name="action_settings">Settings</string>
</resources>

Sau đây là nội dung của res/values/strings.xml để định nghĩa hai hằng

Sau đây là nội dung mặc định của AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.example.saira_000.myapplication"
  android:versionCode="1"
  android:versionName="1.0" >

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

  <application
     android:allowBackup="true"
     android:icon="@drawable/ic_launcher"
     android:label="@string/app_name"
     android:theme="@style/AppTheme" >
   
     <activity
        android:name="com.example.saira_000.myapplication.MainActivity"
        android:label="@string/app_name" >
   
        <intent-filter>
           <action android:name="android.intent.action.MAIN" />
           <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
   
     </activity>
   
  </application>
</manifest>
Cuối cùng, chạy ứng dụng Android vừa tạo ở trên.

0 nhận xét:

Đăng nhận xét

 
Top