2011-01-28 5 views
1

SMSがマップ座標を含む到着時にマッピングアプリケーションを起動しようとしています。私は私のbroadcastreceiverは問題なく設定していると私はそれを理解するように私は次のように何かをする必要があります。放送受信機からインテントを開始することは可能ですか?

   Uri uri = Uri.parse("geo:" + latitude + "," + longitude +"?z=10"); 
       Intent mapintent = new Intent(android.content.Intent.ACTION_VIEW, uri); 
       startActivity(mapintent); 

が、EclipseはstartActivityがタイプBroadcastReceiver用に定義されていないことを私に語っています。意図を開始するにはどうすればいいですか?

答えて

4

startActivity()Contextクラスの場合、Contextのインスタンスを使用するだけで済みます。 onReceive()メソッドで渡されたものを取得します。

+0

私はcontext.startActivityを使用して試してみました(インテント)が、アプリケーションの強制はjava.lang.StringIndexOutOfBoundsExceptionで終了します。文字列インデックスが範囲外です:4エラーの原因:java.lang.StringIndexOutOfBoundsException:文字列インデックスが範囲外です。4 – Fuzzy

+0

全体のスタックトレースをポストしてください。コードを表示します。 –

+0

その問題を解決しました。また、mapintent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)を追加する必要があります。 – Fuzzy

1

Contextのインスタンスがどこかにあるはずです。コンテキストには、使用できるstartActivityメソッドがあります。完全のために

2

:mbaird(とユージン)として

)がOnCreate関数(渡されたアクティビティからコンテキストを使用した - 最終的な解決策は、次のようになります。

Uri uri = Uri.parse("geo:" + latitude + "," + longitude +"?z=10"); 

Intent mapintent = new Intent(android.content.Intent.ACTION_VIEW, uri); 

mapintent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

context.startActivity(mapintent); 
関連する問題