4

アプリをバックグラウンドで実行していて、以下のコードを実行したときにアプリをAndroidフォンの上部(起動済み)に表示したいと思います。(私はコードが確かに実行されていることを知っています)

これは簡単なことのように思えますが、私はこのサイトで数時間を過ごし、誰もが次のようなことを提案しているようです。

Intent intent = new Intent(myActivity.this, myActivity.class);
startActivity(intent);

ただし、アプリを前面に出して起動するわけではありません。

通知から起動されたPendingIntentから動作するようになりました。私は以下のコードでこれを行いました。しかし、ユーザーが通知をクリックせずにアプリを単独で起動したいのですが。

Intent intent = new Intent(myActivity.this, myActivity.class);
PendingIntent contentIntent = PendingIntent.getActivity(this, REQUEST_CODE, intent, 0);
notification.setLatestEventInfo(this, "title", "msg", contentIntent);

私も試しました:

Intent intent = new Intent("android.intent.action.MAIN");
startActivity(intent);

意図にフラグを立てます:

intent.setFlags(Intent.FLAG_FROM_BACKGROUND);
intent.setFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

しかし、何もしていないようです。助けていただければ幸いです。

4

6 に答える 6

5

次のように、独自のアプリケーションを呼び出すことができるはずです。

Intent intent = new Intent("android.intent.category.LAUNCHER");
intent.setClassName("com.your.package", "com.your.package.MainActivity");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

編集: intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);を追加するのを忘れました

于 2012-05-24T21:00:00.303 に答える
0

私が理解していることから、バックグラウンドで実行されているサービスが必要であり、特定のイベントで、アプリケーションのアクティビティが前面に表示されるようにします。つまり、ユーザーが何をしていても、現在の画面に表示されます。ユーザーの操作なしにバックグラウンドサービスにアプリケーションを起動させることはお勧めできません。アンドロイド開発者のウェブサイトは言う

ステータスバー通知は、バックグラウンドサービスが応答を必要とするイベントについてユーザーに警告する必要がある場合に使用する必要があります。バックグラウンドサービスは、ユーザーの操作を受け取るために、それ自体でアクティビティを起動してはなりません。代わりに、サービスは、ユーザーが選択したときにアクティビティを起動するステータスバー通知を作成する必要があります。

したがって、それを単独で起動させようとしないでください。

于 2012-05-24T21:02:35.870 に答える
0

私はラップトップのATMの後ろにいないのでわかりませんが、コンテキストオブジェクトの手を渡してからcontext.startactivity(intent);を実行する必要があると思います。

フォーマットされていないことをお詫びします私は私の電話のATMにいます

それが役に立てば幸い

于 2012-05-24T21:06:10.857 に答える
0

私は保留中のインテントを使用することになり、代わりにインテントを使用しようとしました。このようなもの: はるかに単純に見えます。

Intent.send(this, 0, intent);

ありがとう。

于 2012-05-31T22:54:03.827 に答える
0

私はここでストローを握りしめていますが、あなたはこう書いています:

MyActivity が最初に起動され、次に別のアプリに移動するか、ホーム画面を押してアプリをバックグラウンドで実行します。

そのため、元のアクティビティがバックグラウンドで実行されていないという状況です。HOME を押したときに、停止して破棄された可能性があります。バックグラウンド タスクは孤立したままであり、この時点でMyActivity.thisnullです。

Log.i(TAG,MyActivity.this); の動作をテストしてみてください。LogCat に出力します。

于 2012-05-24T21:09:58.363 に答える