バックグラウンドで実行されているときにユーザーのアクティビティを追跡できる Android アプリを作成することは可能ですか? (ユーザーが使用した他のアプリ、ユーザーがダイヤルした電話番号、ユーザーの GPS 位置など)など)単一のAndroidアプリが他のアプリケーションに反応できるかどうかわかりませんが、答えを知っている人はいますか? ありがとう
4 に答える
一般的な場合、いいえ、できません。そして、ユーザーはおそらくそれを好むでしょう。
これが言われると、特定の部分的な解決策があります。システムが非常に役立つ場合は、ユーザーのアクションを反映したインテントを公開します。たとえば、ユーザーがアプリをアンインストールした場合、アンインストールされたアプリ自体にはそのインテントが表示されないことに注意してください。
以前は、Jelly Bean(4.1)アプリが他のアプリケーションが公開するログを読み取ってそこから情報を抽出しようとする前は、面倒でエラーが発生しやすく、恩知らずな作業でした。たとえば、ブラウザが特定のページに移動しても何も表示されません。adb logcat
何が可能で何が不可能であるかを理解するために、しばらくの間ログを読むことができます。このアクションには関連する権限が必要ですが、現在は通常のアプリでは保持できません。
ログについての情報を提供してくれた@WebnetMobileと、リンクを提供してくれた@CommonsWareに感謝します。以下のコメントを参照してください。
はい、できます。
たとえば、電話情報についてはこちらをご覧ください: 通話時間の追跡
また
http://www.anddev.org/video-tut_-_querying_and_displaying_the_calllog-t169.html
Android とユーザーに、データを使用およびアクセスしていることを知らせて、許可するかどうかを判断する方法があります。
どのアプリにも簡単にアクセスできるかどうかはわかりませんが、理論的には、保存されたファイルを読み取る方法を知っていれば可能かもしれません.
たとえばRuntime.getRuntime().exec("ls -l /proc");
、そこに必要なデータがたくさんある "proc" ルート フォルダーを取得します。これは変更されている可能性があります。よくわかりません。また、何が必要なのかもわかりません。
おそらく実行中のプロセスを取得するには、次を試してください:
public static boolean getApplications(final Context context) {
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningTaskInfo> tasks = am.getRunningTasks(1);
}
これを機能させるには、これを AndroidManifest.xml に含める必要があります
<uses-permission android:name="android.permission.GET_TASKS" />
詳細については、http: //developer.android.com/reference/android/app/ActivityManager.html#getRunningAppProcesses%28%29を参照してください。
幸いなことに、そのレベルでユーザーをスパイすることは不可能です。特定の機能は、遅かれ早かれ修正される Android のバグを悪用して実現できます。私がかけている番号と最近どこにいたかをあなたが知る必要は全くありません。基本的にあなたには関係ありません。
確かにそうすることができますが、インターネットを介して、ユーザーが知らないうちにそのデータをあなたに報告することは、スパイウェアと見なされ、ほとんどの法域でほぼ確実に違法になると思います.