我可以使用Android应用程序来跟踪用户活动吗?

时间:2012-11-21 18:27:36

标签: android

我希望知道是否有可能编写一个Android应用程序,当它在后台运行时,它可以跟踪用户活动?(例如用户使用的其他应用程序,用户拨打的电话号码,GPS位置对于用户等)因为我不确定一个Android应用程序可以对其他应用程序做出反应,有人知道答案吗?感谢

4 个答案:

答案 0 :(得分:6)

在一般情况下,不,你不能。用户可能会更喜欢它。

有人说过,有一些部分解决方案。有时系统非常有用,它会发布Intent反映用户操作的内容:例如,当用户uninstalls an app时 - 注意到您没有在应用程序本身上获得该意图被卸载。

过去,before Jelly Bean (4.1)个应用程序可以读取其他应用程序发布的日志,并尝试从那里提取信息,但这是一个麻烦,容易出错,忘恩负义的任务。例如,浏览器在导航到某个页面时不显示任何内容。您可以使用adb logcat读取日志一段时间,以了解可能的内容和不可行的内容。此操作需要the relevant permission,现在常规应用无法保留。

感谢@WebnetMobile关于日志和@CommonsWare的链接,请参阅下面的评论。

答案 1 :(得分:1)

幸运的是,不应该在该级别监视用户。某些功能可以通过滥用android中的bug来实现,这将很快得到修复。我完全没理由你知道我打电话的号码以及我最近在哪里。这基本上不属于你的业务。

答案 2 :(得分:1)

是的,你可以。

您可以在此处查看有关电话信息的信息: Track a phone call duration

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

答案 3 :(得分:0)

你当然可以,但我认为通过互联网向用户不知情地报告数据会被视为间谍软件,而且在大多数司法管辖区几乎肯定是非法的。