2013-01-10 10 views
13

私のアプリケーションから「Recent Apps」ダイアログを開くことができます。これはホームボタンを長押しして開くダイアログです。私はAndroid 4.1以前のためにプログラミングしています。私はカスタムAccessibilityServiceを実装し、AccessibilityService.performGlobalAction(GLOBAL_ACTION_RECENTS)を呼び出すことでそれを行う方法を見つけましたが、これは電話でアクセシビリティを有効にする必要があります。アプリからこのダイアログを開く他の方法はありますか?Android:プログラムで「Recent Apps」ダイアログを開きます

ありがとうございました!

答えて

5

アクセスできません。しかし、それは自分のロールするのは難しいことではありません。 getRecentTasks()メソッドは、最近実行されたアプリケーションのリストを返します。リストを作成して独自のUIを追加するだけです。

これの利点の1つは、Androidの古いバージョンでは、デフォルトのバージョンでは約8つのアプリしか表示されないということです。あなたがロールしている場合は、あなたが望むだけ多くを表示することができます。

+3

一部のベンダーは最近のアプリのダイアログを変更するので、あなたのダイアログはそれらのユーザーと似ていないことに注意してください。 – Leonidos

+0

@Leonidos真実ですが、私は「AccessibilityService」を使用せずに思いついた最善の解決策です。 –

+0

私は残念ながら他の方法はないことを知っています... – Leonidos

34

申し訳ありませんが、最近のアプリのアクティビティをトリガすることは可能です。

StatusBarManagerServiceは、リフレクションを通じて使用できるパブリックメソッドを実装しています。

次のコードを使用することができます

Class serviceManagerClass = Class.forName("android.os.ServiceManager"); 
Method getService = serviceManagerClass.getMethod("getService", String.class); 
IBinder retbinder = (IBinder) getService.invoke(serviceManagerClass, "statusbar"); 
Class statusBarClass = Class.forName(retbinder.getInterfaceDescriptor()); 
Object statusBarObject = statusBarClass.getClasses()[0].getMethod("asInterface", IBinder.class).invoke(null, new Object[] { retbinder }); 
Method clearAll = statusBarClass.getMethod("toggleRecentApps"); 
clearAll.setAccessible(true); 
clearAll.invoke(statusBarObject); 

を楽しんできてね:)

+0

を参照してください。リフレクションを使用することは、一般的には効果があるという保証がないため、またはAndroidのすべてのバージョンで動作する可能性があるため、悪い考えです。 –

+4

上記のコードを使用している場合は、 'try/catch'でラップしてください。 –

+0

上記のコードはAndroid2.2および2.3で動作しません。それを動作させる他の方法がありますか? – Sathish

4

これはTOGGLE_RECENTSインテントを使用して行うことができます。

Intent intent = new Intent ("com.android.systemui.recent.action.TOGGLE_RECENTS"); 
intent.setComponent (new ComponentName ("com.android.systemui", "com.android.systemui.recent.RecentsActivity")); 
startActivity (intent); 
+0

ありがとうございます。これは私のためにAndroid 5.1.1で機能しました。しかし、結果として得られた活動は、通常のAndroid 5とは異なって見えました。また、2行目の閉じ括弧を忘れてしまったと思います。 – Sam

関連する問題