通过ADB在非根设备上备份/还原SMS / MMS?


10

如果设备没有植根,是否可以使用ADB备份/还原SMS和MMS消息?

  • adb pull在这里不起作用,因为如果相应的数据库(/data/data/com.android.providers.telephony/databases/mmssms.db)不在非安全(root)模式下运行,则ADB无法读取该数据库
  • adb shell "cat /data/data/com.android.providers.telephony/databases/mmssms.db > /sdcard/mmssms.db 没有root用户访问权限也不起作用
  • adb backup 由于某种原因,该数据库没有覆盖我检查过的设备上的该数据库(空备份–生成文件中备份头的41个字节)

我特别想知道为什么adb backup不涵盖这一点。如果是出于“隐私原因”,则应将其同样应用于联系人数据库-显然已备份。

参考文献:

那么:在非根设备上有什么解决方案?请注意,我不是要求一个应用程序为基础的解决方案。我完全知道可以使用多种应用程序。我特别希望通过ADB使用“基于外壳的解决方案”。


我不是要基于应用程序的解决方案 ” -再次取证?
Firelord

1
最好是(对于其他读者:首选解决方案不需要在设备上进行任何修改)。考虑到问题设备已经报告“内存不足”,因此无法安装某些设备。由于该设备在其他情况下也很奇怪,因此必须执行出厂重置–因此最好“保存”尽可能多的数据。我能够通过adb backup以下方式备份大多数内容:少数例外,其中大多数可忽略,但用户非常喜欢保留短信,而短信也未涵盖。
伊齐

嘿!很抱歉打扰您曾经没有根的解决方案吗?顺便说一句优秀的应用程序列表,谢谢您的链接!
格鲁伯

1
@Gruber不,仍然没有找到任何东西。//很高兴您喜欢我的应用程式清单!
伊齐

Answers:


6

我特别想知道为什么adb备份不能解决这个问题。

这并不是说adb backup不想支付应用com.android.providers.telephony。此应用程序基于,与任何其他系统应用程序都没有太大区别AndroidManifest.xml。问题在于其开发人员在清单中声明的​​标志,出于某种原因,该标志作为默认机制adb backup必将受到尊重。

此标记为android:allowBackup="false"。它从ADB备份和还原中退出该应用程序。谷歌在这里不得不说:

android:allowBackup

是否允许应用程序参与备份和还原基础结构。如果将此属性设置为false,则即使通过全系统备份也不会执行应用程序的备份或还原,否则将导致所有应用程序数据通过adb保存。此属性的默认值为true。

(强调我的)

此处签出AndroidManifest.xml该应用程序的Lollipop版本,或者在我的Android 4.2.1中查看以下证据:

IMG:无备用标志

这个应用程式还有更多功能。您甚至无法从“设置”→“应用程序”→“所有应用程序”→“ 清除数据 ”,<THIS_APP>因为也android:allowClearUserData="false"被声明,这不是我们时常遇到的事情。

如果出于“隐私原因”,则应将同样的内容应用于联系人数据库-显然已对其进行了备份。

这很奇怪,不是您能够做到这一点,而是您的系统如何甚至只允许您做到这一点adb backup

联系人存储由“ ContactsProvider”应用处理,该应用使用pkg_name = com.android.providers.contacts。该标志android:allowBackup="false"AndroidManifest.xmlJelly Bean中有明确提及(请单击此处查看其他版本)。

您在使用ICS还是JB的任何前身?

我发现,这个程序不具有ICS该标志的任何声明在这里。实际上,您可以清除这个谜团,因为根据标志的定义,我无法在JB 4.2.1中备份此应用程序,并且始终获取该41字节的备份文件。


至于使用ADB进行无根访问的SMS / MMS备份/还原的任何其他方法,请在这里动手。


我知道那是那个标志。但是,该应用程序和ADB都是系统的一部分–我们在这里不是在谈论第三方供应商。为了澄清起见:我在这里引用的设备运行JellyBean(4.1.2)。感谢您的提示,我将在其他设备(4.2和4.3)上再试一次。关于隐私:还可能提示用户提供密码。另外,SharedStorage也可能包含“私人数据”-另外,Google假设启用Google帐户时默认情况下我想同步我的联系人/日历,而不是询问我(因此无法选择退出,如果您已经添加了联系人/日历) )。
伊齐

有可能变成麻烦:如果它太私密而无法备份–为什么还要保护它免受“清晰数据”的侵害?“绝不归咎于恶意,这可以用纯粹的愚蠢来解释”…//因此,没有根就不可能:仅保留适当的Xposed模块(“备份所有应用程序”)。再次需要将其安装在设备上–我想避免... ...(使用root用户)拉数据库是一种解决方法–但这不允许跨设备还原(尝试过一次,不是好主意,因为它使SMS无法使用,所以我必须重新设置)
Izzy

1
我知道@Izzy,您知道这样一个简单的标志((您并非凭空成为Pro,而是通过研究和经验:),但是其他人在寻找这样一个简单问题的答案时可能并不知道,所有此信息不适合发表评论。我实际上是想写这个评论,但是最后写这个答案时忘记了,对不起!
Firelord

1
//至于密码,虽然ADB确实提供了受通行保护的备份,但Google(IMO)可能认为阻止访问敏感内容比允许访问更好,因为在设备丢失的情况下,未经授权的访问可能会导致数据转储如果有人有可能启用了USB调试,然后进行蛮力攻击,则表示此人。
Firelord

1
-哦,好吧,自从他们开始以商业名义限制自由以来,他们就已经意识到了这一点,这可能是另外一回事了。如果遇到某种情况,我会报告一些好消息(当然是无言以对)。
Firelord
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.