android - 是否可以获取已安装应用程序的用户名和密码?

标签 android ios iphone

Android SDK 是否可能/允许获取已安装应用程序的用户 ID 和密码(如果它有登录名)?我需要已安装的应用程序信息,例如应用程序名称、程序包名称、安装日期,并且想知道获取登录名和密码是否可行并且 Android 是否允许。

This question有助于获得所需的用户名,但这是特定于应用程序的。我想要的是一个通用的解决方案,比如如果安装的应用程序有登录名(用户名和密码),例如 Facebook 或 Gmail 或 twitter,那么它应该返回值。

我想在 iPhone 应用程序中使用。请也提出您对 iOS 的看法。我想明确指出,我不确定这在 Android 和 iOS 中是否被允许。

此外,AccountManager 可以在 Android 中帮助我吗?

最佳答案

用户名和密码

iOS

有点不清楚,但我假设您是在谈论获取其他已安装应用的登录信息,因为我不明白您为什么需要一种通用的方法来获取您自己的应用的信息。

至于iOS部分,这是不可行的。大多数应用程序将密码存储在钥匙串(keychain)中(如 Apple 建议的那样),并且无法与其他应用程序共享钥匙串(keychain)访问组(除非应用程序共享相同的 Bundle seed ID,但这里不是这种情况)。 Apple Keychain Services Concepts明确指出

The iOS gives an application access to only its own keychain items. The keychain access controls discussed in this section do not apply to iOS.

安卓

我非常怀疑 Android 上是否存在这种方法,但我会把它留给更有经验的 Android 开发人员来回答。

编辑:由于您还没有收到任何其他答案,我将继续谈谈我对 Android 部分的看法。一般来说,Android 不提供与 iOS 相同的存储凭据的方法。相反,有多种方法可以做到这一点。在他们的 Security Tips site ,他们声明在可能的情况下,用户名和密码不应存储在设备上。例如,Gmail 不会 ( perhaps unreliable source )。如果您确实将它们存储在那里,它还会说

By default, files that you create on internal storage are accessible only to your app.

应用检测

在检测应用程序时,有两种方法(适用于 iOS):

  • 检查设备是否支持特定的 URL 方案(因此安装了应用程序)。这可以通过 canOpenUrl:
  • 来完成
  • 将设备当前运行的进程与已知的应用可执行文件名称进行比较。这是通过 sysctl() 完成的。这是一种巧妙的方法:UIDevice Category For Processes

对于 Android,请查看此示例:How to Get List of Installed Apps in Android .

结论

根据设计,在 iOS 或 Android 中无法获取用户名和密码。有多种方法可以获取安装在 iPhone 上的大多数应用程序的列表。这在 Android 上也应该可行,我提供了一个链接,描述了一种实现方式。

关于android - 是否可以获取已安装应用程序的用户名和密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20028925/

相关文章:

android - 如何从 Android 设备仅获取电话号码联系人

在新设备上选择照片时 Android 应用程序崩溃

ios - Xcode - clang 失败,退出代码为 1。插件原因?

ios - UIS滚动中心图像

iphone - 在表格 View 中切换图像时如何采取任何行动?

苹果硅(arm64)上的 Android 模拟器只能使用 sudo 模式运行

java - 将 Android 应用程序从我的手机复制到我的电脑

ios - 计算视频文件md5(hash)

iphone - Xcode 4.3.1 "A valid provisioning profile for this executable was not found"

iphone - AVFoundation - 如何使用 beginConfiguration 和 commitConfiguration 更改 AVCaptureMovieFileOutput 设置?