17 April 2013

การใช้ Intent เพื่อเปิดแผนที่ด้วยแอปอื่นๆ

Updated on

        ก็ยังคงอยู่ที่เรื่อง Intent เหมือนเคย คราวนี้ต่อกันด้วยการดูแผนที่ โดยไม่ต้องเขียนให้โปรแกรมเรียกใช้งาน Google Maps แต่อย่างใด เหมาะกับแอพที่ไม่ได้ต้องการใช้งาน Google Maps มากนัก

        ไม่ขออธิบายอะไรมากละกัน เพราะโค๊ดนั้นแสนง่ายและสั้น

Uri uri = Uri.parse("geo:13.7309018.100.5411672?z=18");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(Intent.createChooser(intent, "View map with"));

        สำหรับ 13.7309018 ก็คือละติจูดและ 100.5411672 ก็คือลองจิจูดที่ต้องการให้เวลาที่เปิดแอพ แผนที่แล้ว จะเลื่อนไปที่ตำแหน่งนั้นทันที และ z=18 ก็คือระดับของการซูม โดยจะให้ซูมไปที่ระดับ 18 (ซูมใกล้)

        แต่สำหรับ Google Earth จะไม่สามารถคำสั่งดังกล่าวได้ ต้องใช้คำสั่งดังนี้

Intent intent = new Intent(); 
intent.setClassName("com.google.earth", "com.google.earth.EarthActivity"); 
intent.setAction(Intent.ACTION_SEARCH);                 
intent.putExtra(SearchManager.QUERY, "13.7375018,100.5651672");
startActivity(intent);

        สำหรับโค๊ดตัวอย่างในบทความนี้ก็จะไม่มีอะไรมาก มี Button หนึ่งตัว เมื่อกดแล้วก็จะแสดงรายชื่อแอพที่รองรับการใช้งานแผนที่ พอเลือกแอพนั้นๆ ก็จะเปิดขึ้นมาแล้วเลื่อนไปยังตำแหน่งที่กำหนด


main.xml
<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" >

    <Button
        android:id="@+id/buttonIntent"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="View Map" />

</RelativeLayout>


Main.java
package app.akexorcist.intentviewmap;

import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class Main extends Activity {

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        Button buttonIntent = (Button)findViewById(R.id.buttonIntent);
        buttonIntent.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                Uri uri = Uri.parse("geo:13.7309018,100.5411672?z=18");
                Intent intent = new Intent(Intent.ACTION_VIEW, uri);
                startActivity(Intent.createChooser(intent
                        , "View map with"));
            }
        });
    }
}


AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="app.akexorcist.intentviewmap"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="8" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="app.akexorcist.intentviewmap.Main"
            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>



        สำหรับผู้ที่หลงเข้ามาอ่านผู้ใดที่ต้องการดาวน์โหลดไฟล์ตัวอย่างสามารถดาวน์โหลดได้จาก Intent View Map [Google Drive]



บทความที่เกี่ยวข้อง

        การใช้ Intent สำหรับแชร์ข้อความ String [Send]
        การใช้ Intent สำหรับแชร์ข้อความสำหรับ Email [Send]
        การใช้ Intent เพื่อเปิด URL [View]
        การใช้ Intent เพื่อเปิดแผนที่ [View]
        การใช้ Intent เพื่อเปิดไฟล์ใดๆ [View]
        การเรียกเปิดแอพฯอื่นๆ ด้วย Intent
        การใช้ Intent สำหรับแชร์ไฟล์ใดๆ [Send]
        การเลือกไฟล์ภาพจาก Gallery ด้วย Intent [Result]
        การใช้งานกล้องเพื่อถ่ายภาพแบบง่ายๆด้วย Intent [Result]
        การใช้งานกล้องเพื่อบันทึกวีดีโอแบบง่ายๆด้วย Intent [Result]
        การอ่าน QR Code และ Barcode ด้วย Intent [Result]
        การรับข้อมูล Intent จากแอพฯอื่นๆ [Get Content]
        การรับข้อมูล Intent จากแอพฯอื่นแล้วส่งข้อมูลกลับไป [Result Content]