ユーザーがアプリケーションをクリックすると、アプリケーションの名前を含むメッセージがユーザーに表示されるという意味でサービスを作成しようとしました。ソリューションのコードは見つかりませんでした。解決策を提案していただければ幸いです。ありがとうございました。
いくつかのコードを見つけましたが、正しく機能しませんでした。1つのアプリケーション、つまりサービスが実行されているアプリケーションに対してのみメッセージが表示されます。インストールされているすべてのアプリケーションのメッセージを表示したいと思います。
@Override
public void onStart(Intent intent, int startId) {
ActivityManager mActivityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> RunningTask = mActivityManager.getRunningTasks(1);
ActivityManager.RunningTaskInfo ar = RunningTask.get(0);
String activityOnTop = ar.topActivity.getClassName();
Toast.makeText(this, activityOnTop, Toast.LENGTH_LONG).show();
わかりません、このサービス部分はどのように機能しますか?
ただし、これは、どのアプリがフォアグラウンドにあるかを知るのに役立つコードです。
ActivityManager manager = (ActivityManager) context
.getSystemService(ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> runningTaskInfo = manager
.getRunningTasks(1);
ComponentName componentInfo = runningTaskInfo.get(0).topActivity;
final PackageManager pm = context.getApplicationContext()
.getPackageManager();
ApplicationInfo ai;
try {
ai = pm.getApplicationInfo(componentInfo.getPackageName(), 0);
} catch (final NameNotFoundException e) {
ai = null;
}
final String applicationName = (String) (ai != null ? pm
.getApplicationLabel(ai) : "(unknown)");
System.out.println("applicationName = " + applicationName);
残念ながら:getRunningTasksメソッドはAPIレベル21で非推奨になりました:(
参照:http://developer.android.com/reference/android/app/ActivityManager.html#getRunningTasks(int)
したがって、これを慎重に使用し、SOユーザーが他の解決策を見つけるまで待ちます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加