从主屏幕快捷方式启动时,应用程序未安装错误

Posted

技术标签:

【中文标题】从主屏幕快捷方式启动时,应用程序未安装错误【英文标题】:Application is not installed error, when launched from home screen shortcut 【发布时间】:2013-06-25 23:48:56 【问题描述】:

仅供参考:我已经浏览过这些链接 'App not Installed' Error on android

Application not installed when i try to autoupdate

我的问题有点不同。

我在 1.0 版中发布了默认/主要活动为 XActiivity.java 的应用 我发布了更新,将默认/主要活动更改为 YActivity.java 我发现该应用程序可以从应用程序meanu 正常打开,但是当我尝试从主屏幕快捷方式启动时,它会抛出一个错误,提示“应用程序未安装

我知道这是由于引用旧 XActivity.java 的快捷方式,通过删除将解决此问题,但如果我将应用程序作为更新发布给数千名已经拥有此应用程序的人会在第一次出现此错误消息时感到恼火.我会放弃我得到的好评

【问题讨论】:

尝试删除图标并创建一个新的快捷方式。 【参考方案1】:

请检查您是否在本应为"android.intent.category.LAUNCHER" 的活动上拥有android:exported="false" 属性。这会禁止特定活动在启动器上启动。

【讨论】:

Android 12 需要活动 explicitly set this value。我最初将其设置为 false ,但由于您的回答而更改了它。谢谢! 不,它没有,文档将其应用于服务。只需区分用作启动器活动的内容与服务上的内容,您就会知道在哪里应用导出属性。 我链接了上面记录的 Android 12 (API 31) 更改。 “如果您的应用面向 Android 12 并包含使用 Intent 过滤器的 活动、服务或广播接收器,则您必须为这些应用组件显式声明 android:exported 属性。” 我仔细看了看,它指定使用意图过滤器的活动需要该属性。由于 Main/Launcher 活动使用意图过滤器,因此该属性是必需的。 android:exported="true" 【参考方案2】:

2021 年, 只需添加

android:exported="true"

在清单中,它将被修复

【讨论】:

【参考方案3】:

这是因为主屏幕快捷方式的工作方式与某些启动器中的启动器图标略有不同。

当您将旧快捷方式更新为 YActiivity 时,您的旧快捷方式仍包含对作为主 Activity 的引用。这会导致 Android 认为该应用未安装,因为它在您的应用中找不到标记为 MAIN Activity 的 XActivity。

只需删除主屏幕图标并将其重新添加即可解决此问题。

【讨论】:

谢谢,是的,我同意 /know 您的解决方案,但是如果我将更新发布到数千人,它将影响每个人,因此他们可能会面临同样的问题。 @Shri 不幸的是,除了不更改启动器类的名称之外,您无能为力。一些发射器甚至没有这个问题,但相当多。它只是你无法控制的事情之一。 谁能确定哪些发射器有这个问题。我希望能够重现这一点。 天哪,我在考虑一个 Android 问题,但它只是一个 Activity 名称更新,如此愚蠢的错字;)【参考方案4】:

放置

  <intent-filter>
    <action android:name="android.intent.action.MAIN"/>
    </intent-filter>

Manifest.XML 中的特定活动为我完成了这项工作。

【讨论】:

这与此问题无关。文档说 Activity 的快捷方式必须是 LAUNCHER 和 action MAIN。 (文档developer.android.com/guide/topics/ui/shortcuts)【参考方案5】:

这个问题很老了,但今天仍然很重要。

这是因为我更改了起始活动。我最初有这个(截断):

<manifest>
    <application>
        <activity android:name=".activities.StartActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".activities.OtherActivity"
            android:exported="false" />
    </application>
</manifest>

我删除了 StartActivity,但在添加 Intent 过滤器后忘记删除 android:exported="false"。它看起来像这样:

<manifest>
    <application>
        <activity
            android:name=".activities.OtherActivity"
            android:exported="false"> <!-- REMOVE THIS -->
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

简而言之,确保您的起始活动已导出。

【讨论】:

【参考方案6】:

如果您在应用中同时实现 XActivity 和 YActivity 作为入口点会怎样? XActivity 可以删除它的启动器快捷方式,安装 YActivity 快捷方式,然后启动 YActivity。

【讨论】:

【参考方案7】:

首先确保当前安装的应用程序是否可以移动到 sd 卡 如果他们不能那样,那你就有理由 在我的 htc 愿望 300 上,我在 root 时闪过错误的 rom,我的手机在 bootloop 中变砖了 从商店修理 现在运行自定义 rom 我不知道是哪一个 但它不支持将应用程序移动到 sd 卡 所以我将应用程序复制到手机内存 卸载或移除 SD 卡 然后我尝试从手机内存安装,现在我的 fs2014 1.35 已安装 万劫不复 希望对你有帮助 这仅在您有自定义 rom 时才有效,因为原始 rom 没有这样的错误 或者你称之为错误

【讨论】:

是的,但只有在应用程序包安装期间未安装应用程序时才有效【参考方案8】:

“未安装应用程序”错误的可能解决方案

重启手机:在这种情况下,首先要做的是重启 你的设备。或者只是关闭、取出并重新插入电池。 确保卸载所有不使用的应用程序以释放空间,同时 卸载当前安装在上的同一应用程序的早期版本 您的设备。

仔细检查您下载的 apk 文件并确保它们是 完全复制或下载。

尝试通过转到设置>应用>所有>菜单键来重置应用权限

重置应用权限或重置应用偏好。

将应用安装位置更改为自动或让系统决定。 确保您的 SD 卡未安装或连接到 PC 或 其他地方。

对于最坏的情况,请格式化您的 SD 卡 - 复制其中的内容 其他地方进行备份和格式化。

最后的解决方案是彻底擦除您的设备。要么由 在“设置”下恢复出厂设置或在中进行完全擦除 恢复模式。

Reference

【讨论】:

【参考方案9】:

一分钟前我也遇到了同样的问题。 我不是专家,所以我能从所有答案中得到的只是问题在于启动器在主屏幕上创建的快捷方式。 我正在使用没有应用程序抽屉的经典简约启动器,因此所有应用程序都在主屏幕上,所以我不能只删除快捷方式而不卸载它。

所以我清除了启动器的缓存,它自己为该应用创建了新的快捷方式,然后它开始工作了。

【讨论】:

【参考方案10】:

可能是这种情况,请检查您的代码中的“应用程序快捷方式创建”,其中Intent.EXTRA_SHORTCUT_INTENT 映射到 LAUNCHER 活动。 (可能是 SplashScreenActivity)

【讨论】:

【参考方案11】:

我写的解决方案是。 AndroidManfest.xml

    我为之前的 XActivity.java 保留了意图过滤器 android.intent.action.MAIN。 我还保留了意图过滤器 android.intent.action.MAIN 以及作为 LAUNCHER 到 YActivity.java 的类别

在 XActivity.java 的 onCreate() 方法中我添加了这些行,它似乎已经解决了问题

Intent thisIntent = getIntent();
if(thisIntent.getAction() == "android.intent.action.MAIN")

        Intent intent = new Intent(this,YActivity.class);
        startActivity(intent);
        finish();

【讨论】:

嗨 - 我正在尝试您的解决方案,但不幸的是,这真的很难测试。您能否解释一下这是如何解决的,因为如果问题出在快捷方式的详细信息中嵌入了不匹配的启动器活动,那么我不确定应该如何解决它。请详细说明。谢谢! 这并没有为我解决这个问题,但设置 android:exported="true" 确实如此,根据这个答案:***.com/a/39957428/1346778

以上是关于从主屏幕快捷方式启动时,应用程序未安装错误的主要内容,如果未能解决你的问题,请参考以下文章

分享 App 应用快捷方式 [UIApplicationShortcutIconTypeShare]

如何在应用安装时将我的应用快捷方式添加到主屏幕? [复制]

主屏幕应用程序快捷方式不适用于 android。未安装应用程序

带有自定义启动屏幕的 UIApplication 快捷方式

VS打包程序制作的快捷方式指向错误的位置(指向安装包文件) 导致每次启动都要windows正在配置

与从 IDE 构建/运行相比,iOS 14 不允许 Flutter 应用程序(仍处于开发阶段)从主屏幕启动