2016-04-07 18 views
-3

誰かが私がこのコードを使用するときに完全なパッケージ名を取得できない理由を説明できますか?代わりに、これを取得する例についてはパッケージ名を取得

、:com.android.phone.EmergencyDialer.DIAL

は私だけcom.android.phone得ます。

これを修正して完全なパッケージ名を取得するにはどうすればよいですか?

final ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); 
final List<ActivityManager.RunningTaskInfo> recentTasks = activityManager.getRunningTasks(Integer.MAX_VALUE); 

for (int i = 0; i < recentTasks.size(); i++) 
{ 
    Log.d("Executed app", "Application executed : " +recentTasks.get(i).baseActivity.getPackageName()+ "\t\t ID: "+recentTasks.get(i).id+""); 
} 

ありがとうございます。

+0

これを見てくださいhttp://stackoverflow.com/questions/28066231/how-to-gettopactivity-name-orget-current-running-application-package-name-in-lo – Deshan

+2

com.android .phone'はそのタスクの完全なパッケージ名です。 'com.android.phone.EmergencyDialer.DIAL'はパッケージ名ではありません。なぜあなたはそれを取得すべきだと思いますか? – laalto

+0

@laaltoだから、どういうわけか 'com.android.phone.EmergencyDialer.DIAL'を入手できますか? –

答えて

0

com.android.phoneは、実際のパッケージ名ですので、com.android.phone.EmergencyDialer.DIALがEmergencyDialerクラスの意図行動のためのフィールドであり、ActivityManagerからcom.android.phone.EmergencyDialer.DIALを得ることが可能であることを行っていません。

参照:https://android.googlesource.com/platform/packages/services/Telephony/+/idea133/src/com/android/phone/EmergencyDialer.java

はあなたがここで達成しようとしているもののよりよい例を与える必要があるだろうが、再び、DIAL変数はちょうどcom.android.phone.EmergencyDialer.DIALとして、ActivityManagerクラスから可能であることを行っていない取得有効な実行中のタスクではありません。

+0

私は知りたいのは、フォアグラウンドで緊急ダイヤラーかどうかです –

+0

問題は緊急ダイヤラーは本当にcom.android.phone内の画面です応用。彼らが緊急ダイヤラーを離れるかどうかを知るための直接的な方法はなく、おそらくあなたが望むものではないかもしれません。技術的に言えば、緊急ダイヤラーから電話をかけることは技術的に緊急ダイヤラーを離れることになります。つまり、現在実行中のパッケージで何らかの種類のAlarmManagerポーリングを実行することで、ユーザーがフォアグラウンドから電話アプリをプッシュしたかどうかを検出できます。おそらく緊急ダイヤラーを検出するのと同じくらい近いでしょう。 – jyanks

+0

まあ、私は緊急ダイヤラと呼び出しが異なるパッケージを持っていることを理解しています。だから、私は緊急ダイヤラーの開閉を検出することができますが、その時点ですべてのトップにある緊急ダイヤラーのパッケージとのパッケージを比較することによって、ユーザーが誰かに私のアプリは、私のコードがこれを行うので、閉じられるでしょうか? –

関連する問題