Komunikace mezi aplikacemi v systému

Aplikace na platformě Android mohou využívat tzv. Intents pro komunikaci mezi sebou. Více informací naleznete na adrese developer.android.com/guide/topics/intents/intents-filters.html, my se v tomto tutorialu zaměříme na jeden konkrétní příklad.

Použijeme Intent DIAL_ACTION pro otevření rozhraní pro vytočení telefonního čísla. Nejprve si vytvoříme layout v XML souboru:

<?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">
</LinearLayout>

Syntaxe pro vytvoření třídy Intent je následující:
Intent <intent_name> = new Intent(<Android_Intent>,<data>)

V našem případě nahradíme <intent_name> třídou DialIntent. Parametry v kontruktoru odpovídají typu "zprávy" a poslaných dat. Kód bude vypadat takto:
Intent DialIntent = new Intent(Intent.ACTION_DIAL,Uri.parse("tel:123456"));

V tomto konstruktoru tedy specifikujeme, že typ zprávy bude "ACTION_DIAL" a data, která posíláme, bude URI obsahující speciální řetězec telefonního čísla. Celý kód bude tedy vypadat takto:

package cz.cvut.fel.android;
  import android.app.Activity;
  import android.content.Intent;
  import android.os.Bundle;
  import android.net.Uri;
  
  public class AndroidPhoneDialer extends Activity
  {
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.main);

      Intent DialIntent = new Intent(Intent.ACTION_DIAL,Uri.parse("tel:123456"));
      
      /** Použijeme flag NEW_TASK_LAUNCH ke spuštění aktivity */
      DialIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK );
      /** Spustíme aktivitu */
      startActivity(DialIntent);
    }
  }

Pokud jste vše dělali přesně podle návodu, po spuštění byste měli vidět tuto plochu: