【问题标题】:Why some apps can't be moved to the sd card?为什么有些应用不能移到sd卡?
【发布时间】:2017-07-17 12:06:31
【问题描述】:

我知道开发人员通过清单中的android:installLocation” attribute 选择允许或不允许这样做。我的问题是:允许或不允许这样做的原因是什么?


我经常看到许多应用程序不属于下一个列表的任何类别。他们不允许移动到sd卡,为什么要这样做?这可以带来什么类型的优势/好处。

  • 服务
  • 报警服务
  • 输入法引擎
  • 动态壁纸
  • 应用小部件
  • 客户经理
  • 同步适配器
  • 设备管理员
  • 广播接收器监听“启动完成”

【问题讨论】:

标签: android android-sdcard sd-card


【解决方案1】:

我认为主要原因(也可能是唯一原因)是因为手机可能没有太多内部存储空间。因此,手机可以利用外部存储空间让用户在内部存储空间已满时安装更多应用程序。我假设您已阅读以下文档。它没有提到这个答案,但我认为这就是它存在的原因。

https://developer.android.com/guide/topics/data/install-location.html

编辑:我认为有不少低端设备的内部存储与外部存储相比非常低。

编辑 2:为什么不这样做是因为外部存储上的所有数据都是世界可读的。因此,如果您是应用程序存储数据,则可以将其取出并在其他设备上读取。根据应用程序,您可能不想允许这样做。

【讨论】:

  • 但是“为什么不”呢?
  • 好吧,我没有从我发布的链接中复制和粘贴,但我输入了“为什么”。另一个答案只说为什么不。另外,我先发布了(我只是没有从链接中发布内容,因为我不确定您是否阅读了它-为将来的答案吸取了教训)。这么多答案都没有回应。
【解决方案2】:

根据the documentation,在以下情况下,您不应允许您的应用安装在外部存储上:

  • 服务
  • 报警服务
  • 输入法引擎
  • 动态壁纸
  • 应用小部件
  • 客户经理
  • 同步适配器
  • 设备管理员
  • 广播接收器监听“启动完成”

文档接着说:

默认情况下,系统不会允许你的应用安装在外部存储上,所以你不必担心你现有的应用。

这意味着默认情况是不允许安装在外部存储上。这可能意味着大部分无法安装在外部存储上的应用只是开发人员根本不知道installLocation 并使用默认行为的情况。

您需要单独分析每个应用程序,以查看开发人员是否专门设置了installLocation="internalOnly",或者他们是否完全忽略了它以确定它是否是故意的。

【讨论】:

  • 但我经常看到很多应用程序都不是这些东西。而且他们不允许移动到sd卡,为什么要这样做?这可以带来什么类型的优势/好处。
  • 另外根据文档“默认情况下,系统不会允许您的应用程序安装在外部存储上,因此您无需担心现有的应用程序。” - 他们可能没有更改默认值。
  • 我认为@ianhanniballake 在这里有正确的答案 - 大多数开发人员可能甚至都不会考虑它,如果他们甚至知道这个权限,所以大多数人不会在全部。而且,当然默认是不允许的。
  • 是的,这就是我放 allow 的原因,因为默认情况下它是不允许的。
  • 如果您反编译正在查看的应用程序,您可能会发现开发人员是否设置了installLocation="internalOnly" - 在这种情况下,您需要询问开发人员为什么他们“不允许”在外部存储上安装他们的应用程序(通常,这将是上面列出的原因之一)。如果他们根本没有定义它,他们根本不知道,也没有做出任何努力明确禁止它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-14
  • 1970-01-01
  • 2011-05-20
相关资源
最近更新 更多