私は現在、検索クエリを実行するために他のアプリケーション (YouTube など) を起動する必要がある Android アプリを開発しています。次のコードを使用して、検索クエリを他のアプリケーションに送信することに成功しました。
searchIntent = new Intent(Intent.ACTION_SEARCH);
searchIntent.putExtra("query", searchPhrase);
searchIntent.setPackage(packageName); //Youtube package name, etc
startActivity(searchIntent);
残念ながら、クエリされたアプリが実行されたままになっているときに別のクエリが実行されると、元のクエリで再起動するだけで、別の検索を実行できなくなります。
例: 「子犬」という名前で YouTube の検索インテントを起動します。次に、YouTube のそのインスタンスをバックグラウンドで表示し、「kittens」という名前の別の検索意図を起動します。その 2 番目のインテントを起動すると、YouTube の同じインスタンスが起動し、検索バーに「子犬」が表示され続けます。
この問題を解決するために、さまざまなフラグ (FLAG_ACTIVITY_NEW TASK、FLAG_ACTIVITY_CLEAR_TOP など) を使用してみましたが、役に立ちませんでした。
起動したアクティビティで検索クエリをリセットして、アクティビティ インスタンスを強制終了することなく (戻るボタンなどで) 2 回目の検索を実行できるようにする方法を知っている人はいますか?
ご協力いただきありがとうございます。
編集: この問題は、サービスから起動されるインテントに固有のものであることがわかりました。インテントがアクティビティから起動された場合、起動アプリは起動アプリにシームレスに移行し、起動アプリに戻るには戻るボタンを押す必要があります。残念ながら、IntentService からこのインテントを起動しようとしているため、この問題が発生しています。