我想知道是否有一种方法可以告诉Android默认情况下在micro SD卡上安装应用程序,而不必先将应用程序下载到内存中,然后必须手动将其移动到SD卡上。

谢谢

评论

将应用程序移至SD的可能重复项仅适用于已root用户的设备吗?

特别是因为@Yeradis回答android.stackexchange.com/a/4976/156

@GAThrawn不,那不是骗人的。您链接的问题是“可以将应用程序移至SD”。这是“如何指定默认安装位置”。同一条街,不同的房子。

#1 楼

HowtoGeek上的本文介绍了利用adb的一种可能方法:


启用USB调试
将设备连接到计算机
执行命令adb shell pm setInstallLocation 2
(或使用新语法adb shell pm set-install-location 2)完成断开连接。

此命令会将设备默认安装目标设置为SDCard。那并不一定意味着所有东西都安装在这里:只有支持此功能的应用程序才可以在那里安装,并且开发人员可以根据需要在其应用程序清单中“否决”该功能。从链接的API参考中:


更改默认安装位置。位置值:



0:自动-让系统确定最佳位置。

1:内部-安装在内部设备存储上。

2:外部-安装在外部介质上。

注:这仅用于调试;仅用于调试。使用此功能可能会导致应用程序中断以及其他不良行为。


有关ADB的详细信息以及如何进行操作,例如在计算机上获取它的最低版本(而无需安装整个SDK的过大杀伤力),则可以查看adb标签wiki。 t0mm13b的答案,有关安装过程的一些注意事项:


您在google-play-store上找到了一些应用,并决定安装它
在条款/权限上达成一致后,将apk下载到/data/local,即您的内部存储。您无法更改。

下载完成后,将自动安装.apk。在何处取决于多个因素:


如果开发人员未在其应用程序android:installLocation中指定Manifest属性,则该应用程序将安装到内部故事中。句号,别无选择(请参阅:API参考)。
如果此android:installLocation设置为preferExternal,并且有外部存储可用,它将进入那里。
如果将其设置为auto,则再次取决于:


该应用程序是否包含小部件,服务,是否要在启动时启动以及其他一些功能,因此它进入内部存储。句号,别无选择。
设备“默认安装位置”指向的位置







评论


可能有助于包括警告-它不能保证能正常工作,特别是如果应用程序具有自己的小部件... :)

–t0mm13b
13年4月11日在18:08

如我所写:只有支持此功能的应用程序才能到达:)小部件,服务等都告诉它不支持它:)

– Izzy♦
13年4月11日在18:22

执行命令adb shell pm setInstallLocation 2后,错误:找不到设备

–moudrick
2015年10月1日9:07



听起来您跳过了前两个步骤(启用USB调试并在此之后连接设备)–或者您使用的是Windows,并且未安装相应的驱动程序。请点击相应的链接,然后从那里继续@moudrick。

– Izzy♦
2015年10月1日,9:29

#2 楼

那不能改变!这就是Android的工作方式。

从Google Play进行的所有下载都将转到内部文件系统,然后从以下位置进行下载:


设置>管理应用程序
点击该应用程序,检查按钮

如果启用了“移至SDCard”按钮,则可以执行此操作。

如果“移至SDCard”按钮被禁用或显示为灰色,则可能会阻止该应用程序正常运行-例如主屏幕上自己的小部件。

此外,请在此页面右侧相关的侧栏中查看此答案。 :)

评论


您确定吗,t0mm13b?如此处所述,是否没有向Adb Shell pm setInstallLocation 2(即SDCard)提供一些ADB命令?

– Izzy♦
13年4月11日在16:32



开发人员可以在清单中指定该名称,以使应用程序具有移动到SDCard的功能。 android:installLocation =“ auto”尚未见过adb shell pm setInstallLocation 2,大概是在这种情况下您指定了软件包名称...

–t0mm13b
13年4月11日在17:53

否,t0mm13b-请参阅我的答案和链接文章。这将设置设备的默认安装位置。因此,如果清单显示“自动”,那就行了。如果清单显示的不是“自动”,则显示清单显示的位置。另请参阅:API ref,也可在此处获取pm set-install-location(新语法)命令。

– Izzy♦
13年4月11日在18:21

Izzy-我指定的有关AndroidManifest的android:installLocation的内容-实际上从管理应用程序设置启用了“移至SDCard” ...有些开发人员未指定它并呈现了禁用的按钮,但我承认-从没见过adb命令可以这样做

–t0mm13b
13年4月11日在18:44



嗯,现在我明白了–不同的重点:您说的是“如果不打算将应用程序安装在SD上,则不能这样做” –我将重点放在默认情况下,除非另有说明。但是请检查您答案的前4行,它们说的有所不同。不过,您是正确的:首先下载到/ data / local,然后从那里安装该应用程序。但是根据设置和清单,它可以安装在内部或直接从外部安装。 //如果您想详细讨论这一点:您还记得我们的酒吧吗? :)

– Izzy♦
13年4月11日在19:14



#3 楼

在您的手机中安装“ Android终端模拟器”,然后打开

$ su
# pm get-install-location
0[auto]
# pm set-install-location 2
# pm get-install-location
2[external]


评论


有趣,但是您必须有扎根才能起作用

– Robert S. Barnes
17年5月22日在7:05

#4 楼

转到“管理应用”,然后选择“所有”标签,然后找到“ Google Play商店”。点击它,然后按“卸载更新”按钮。之后,前往Play商店将所有应用安装在SD卡上。这就是我在QMobile A110(Android 4.2)上所做的。

评论


我认为您缺少将默认安装位置设置为SD卡的中间步骤,即使这样,它也不总是对每种应用程序都有效。

–谜
2014年10月20日18:45

#5 楼

问题是,如果您的手机已扎根,您可以更改默认安装目录。
下载幸运的补丁程序并点击工具,您可以找到更改默认安装目录的选项。
**请勿在android 4或更高版本上执行此操作,否则可能会导致不可逆的更改。
**

评论


根据Android版本市场份额2016,在发布此答案之日,所有Android用户中有97.7%使用的是Android 4.0或更高版本,因此Lucky Patcher可能会对几乎所有当前的Android用户造成不可逆转的更改。

–卡雷尔
16年6月8日在8:52



那将是什么“不可逆转的变化”?我在Kitkat设备上没有注意到它们:)但是正如@karel指出的那样:如果您认为不应该使用它,为什么推荐呢?

– Izzy♦
16年6月8日在11:52