1

我正在尝试制作一个 Android 应用程序,我想在其中显示 Skype 用户的日志/通话历史记录(最近的标签)。

据我所知,Skype 将所有联系人存储在服务器中,第一次登录后,它使用同步适配器在我的本地存储(即联系人数据库)中同步所有联系人,但它不同步日志。所有日志都存储在

/data/data/com.skype.raider/files/用户名/main.db

有什么方法可以访问这个数据库,以便当前登录的 Skype 用户的通话记录可以显示在 Android 应用程序中?如果有任何方法可以访问数据库,它是否也可以在非 root 手机上使用?

4

1 回答 1

1

任何应用程序的数据库文件都存储在“data/data/package_name/databases”位置的数据目录中,如果设备没有root,则无法访问该目录。如您所知,对于 Skype,main.db 文件存储在“/data/data/com.skype.raider/files/user-name/main.db”中。

访问它的唯一方法是root设备。生根设备后的步骤是,

  1. 您的应用程序应该从超级用户那里获得 root 访问权限。
  2. 在“data/data/package_name/files/shared.xml”中找到并解析“shared.xml”文件。在这个 xml 文件中,从 username 获取用户名。这样您现在就拥有了数据库的路径。
  3. 由于您将无法访问 main.db 文件,因此您首先必须运行命令“chmod 777 filepath”,它使您可以完全访问该文件。(要通过您的应用程序运行命令,请查看“RootTools”库)
  4. 现在您可以创建自己的 DBHelper 类或使用 SQLiteDatabase.openDatabse(path, cursorFactory, flags) 直接访问数据库;

请记住,对于所有这些,设备必须植根。

于 2016-01-15T12:15:56.597 回答