web-dev-qa-db-ja.com

Androidアプリケーションのメインアクティビティを開始する意図

BroadcastReceiver内からメインアクティビティを開始しようとしています。アクティビティクラス名を指定したくありませんが、Androidのアクションとカテゴリを使用して、メインアクティビティを把握します。

うまくいかないようです。

送信コード:

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);

このエラーが発生します:

原因:Android.content.ActivityNotFoundException:インテントを処理するアクティビティが見つかりません{act = Android.intent.action.MAIN cat = [Android.intent.category.LAUNCHER] flg = 0x10000000 pkg = com.xyz.abc(追加機能あり) }

何か案は?

13
Abhishek

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

Intent startIntent = new Intent(context, MainActivity.class);
startIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);        
context.startActivity(startIntent);
8
Tal Kanel

別のトピックからコピー:

これは、APIレベル3(Android 1.5)以降で機能します。

private void startMainActivity(Context context) throws NameNotFoundException {
    PackageManager pm = context.getPackageManager();
    Intent intent = pm.getLaunchIntentForPackage(context.getPackageName());
    context.startActivity(intent);
}
16
TienLuong

私でさえ、ライブラリアクティビティを介してMainActivityを起動しようとしていました。

そしてこれは私のために働いた:

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

ライブラリのマニフェストにアクティビティを追加してください。

1
Arnab Saha

手遅れなのに。将来誰かに役立つかもしれません。これは私を助けました。

Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
this.startActivity(intent);
0
cantona_7