2012-06-14 5 views
8

私はBroadcastReceiverの内部からメインアクティビティを開始しようとしています。 私は、アクティビティクラス名を指定するのではなく、アンドロイドのアクションとカテゴリを使用してメインアクティビティを把握したいと思います。Android Intentが起動するアプリケーションの主なアクティビティ

動作していないようです。コードの送信

Intent startIntent = new Intent(); 

startIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startIntent.setAction(Intent.ACTION_MAIN); 
startIntent.setPackage(context.getPackageName()); 
startIntent.addCategory(Intent.CATEGORY_LAUNCHER);   
context.startActivity(startIntent); 

を私はこのエラーを取得する:

Caused bt: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 pkg=com.xyz.abc (has extras) }

任意のアイデア?

+0

は、なぜあなたは名前で実際の主な活動を指定したくないでしょうか? –

+1

@Austynたとえば、ライブラリ内のコードを使用する。 – Pataar

答えて

7

これはstartActivityの正しい方法ではありません。
は、代わりにこのコードを試してみてください。

Intent startIntent = new Intent(context, MainActivity.class); 
startIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);   
context.startActivity(startIntent); 
+0

私は、ライブラリプロジェクトのMainActivity.classの代わりに、アプリケーションのコンテキストのみを持っています。ライブラリプロジェクトからアプリケーションの主なアクティビティを開始するにはどうすればよいですか? – Karthick

+0

@Karthick:MainActivity.classの代わりにアプリケーションコンテキストを使用することに問題はありませんが、Intent.FLAG_ACTIVITY_NEW_TASKフラグを使用しない場合は、アプリケーション/サービスコンテキストからの開始アクティビティが必要であるため、例外が発生しますこのフラグ。 –

+0

私がコンテキストを使用している場合、どうすれば使用できますか?インテントnotificationIntent =新しいインテント(コンテキスト、(アクティビティ)(PushNotification.mActiveContext));エラーが発生します。下のリンクのシナリオでこれが必要です。 http://stackoverflow.com/questions/18843118/launch-android-application-from-library-project – Karthick

1

がでも私は図書館の活動を経てMainActivityを起動しようとしていました。

そして、これが私の仕事:

Intent startIntent = new Intent(); 
startIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startIntent.setPackage(getApplicationContext().getPackageName()); 
getApplicationContext().startActivity(startIntent); 

あなたはあなたのライブラリーのマニフェストに活動を追加することを確認してください!別のトピックから

+0

これを試してみましたが、例外はありません:android.content.ActivityNotFoundException:Intentを処理するアクティビティが見つかりません – TienLuong

4

コピー:

これはAPIレベル3(アンドロイド1.5)以降に動作します:

private void startMainActivity(Context context) throws NameNotFoundException { 
    PackageManager pm = context.getPackageManager(); 
    Intent intent = pm.getLaunchIntentForPackage(context.getPackageName()); 
    context.startActivity(intent); 
} 
関連する問題