タブレット用Earthの場合、KMLもKMZも認識してくれるようなので、ファイルをタップすればEarth起動時に読み込んでくれるのですが。
(動作確認:docomo dtab01、Android 4.1.2)

スマホの場合は、認識してくれませんでした。
(docomo xperia Android 2.3.4)

で、どうすべえと。

Earthギャラリにアップするほどでもないし。

で、KML(KMZ)とEarthを関連付けるすべはないんかいな....と思い探してみました。

行き着いたのがファイルマネージャーでした。

でもファイルマネージャーだと、いらんファイルも出てくるし.....。

なら、KML(KMZ)のみ表示するアプリを作って、ここからEarthをローンチすりゃいいんじゃないの?

というわけで、この2つをやってみました。

ファイルマネージャーを使ってみる



Earthのランチャーを作ってみる






ファイルマネージャーを使ってみる

いろいろあるファイルマネージャーの中でも「ESファイルエクスプローラー」がぴったりでした。

Google Playで検索かけます。4MBちょいなのでサイズも手ごろ。

ファイルエクスプローラーを起動してKML(KMZ)ファイルをタップ。

「その他」をタップ。



しばらく待つとアプリの一覧を返してくれます。



「デフォルトアプリにセット」にチェックを入れて、Earthを選びます。

以降、KMLをタップすればEarthが起動します。





でも、不思議。

earthってKMLファイルのreaderとして位置づけられていると思うんだけど、どうしてメニュにファイルの読み込みがないんだろう?






Earthのランチャーを作ってみる

段取りは2つ。

まず、SDカード内のファイルからKML(KMZ)を検索して一覧を表示

タップすれば、そのファイルを使ってEarthを起動。

基礎コードのみですが。

SDカード内のdownloadというディレクトリにあるKML(KMZ)を検索する場合

//ファイルの一覧を検索するディレクトリパスを指定する
String filepath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + "download";

//表示するファイル名のリストを作成
File dir = new File(filepath);
final File[] files = dir.listFiles();


final ArrayList<String> filename_rows = new ArrayList<String>();

for (int i = 0; i < files.length; i++) {
    File file = files[i];
    boolean extension_kml = file.getName().endsWith("kml");
    boolean extension_KML = file.getName().endsWith("KML");
    boolean extension_kmz = file.getName().endsWith("kmz");
    boolean extension_KMZ = file.getName().endsWith("KMZ");
    
    if((extension_kml == true)||(extension_KML == true)||(extension_kmz == true)||(extension_KMZ == true)){
        //OK
        filename_rows.add(file.getName());
        
        
    }
}






file_namesをリスト表示なんかして、タップでファイル名を取得。



ファイル名を使って、Earthを明示的インテントで開きます。

String filepath = Environment.getExternalStorageDirectory().getAbsolutePath()+ "/download/ファイル名";
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setClassName("com.google.earth", "com.google.earth.EarthActivity");
intent.setType("application/vnd.google-earth.kml+xml");
intent.setData(Uri.fromFile(new File(filepath)));
this.startActivity(intent);