2011-06-30 11 views
0

マップ用のカスタムインテントチューザー(モバイルにインストールされているすべてのマップ)を作成しました。しかし今、私は緯度/経度を渡すことができません。カスタムインテントチューザリストでパラメータを渡すにはどうすればいいですか?

intentBuilder.setAdapter(adapter, new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog,int item) 
      { 
       Intent i = null; 

       try 
       { 
        i = pm.getLaunchIntentForPackage(mapList.get(item).activityInfo.packageName);//.getIntent(uri); 
        startActivity(i); 
       } 
       catch (Exception e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 


       dialog.dismiss(); 
      } 
     }); 
     AlertDialog alert = intentBuilder.create(); 
     alert.show(); 

これは、マップを開きますが、任意の場所なし:私はこれを使用していますマップを起動するための

final String mapUri = "geo:"+lat+ "," + lon + "?q="+ address; 
Intent mapIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(mapUri)); 

final PackageManager packageManager = getPackageManager();  
final List<ResolveInfo> mapList = packageManager.queryIntentActivities(mapIntent, 0); 

:私のコードは、すべてのマップを取得するためです。 lat/lonやURIを渡すには?

答えて

2

少なくとも一つの問題はここにある:

i = pm.getLaunchIntentForPackage(mapList.get(item).activityInfo.packageName); 
startActivity(i); 

何getLaunchIntentForPackage()は、パッケージ名に適切な活動のためのACTION_MAIN意図を構築しています。したがって、あなたが立ち上げようとしているインテントは(a)あなたのジオ:URIを持っておらず、(b)元のクエリーで見つかったのと同じコンポーネントに行くことさえできないかもしれません。

、その後に行くと、あなたは正しいものは通常行うには、リストで見つかった活動の一つを起動するには、このようなqueryIntentActivities()を使用して意図にそれが提供しているとIntent.setComponentName()を呼び出すことです必要な特定のコンポーネントに移動します。

起動するActivityInfoのpackageNameと名前からComponentNameを作成します。

+0

すぐにお返事ありがとうございます。私のコードでIntent.setComponentName()を使用するにはどうすればいいですか?事前に感謝 – Sandy

+0

ありがとう、今作業:) – Sandy

関連する問題