在我的应用的AndroidManifest
文件中,主Activity
的{{1}}一直是:
android:name
最近,我更改了应用程序以使用库。所有代码都已转移到库项目中,以便我可以提供免费和付费版本,两者都使用相同的代码(除了一些修改)。
现在清单文件中主android:name=".MainActivity"
的名称是:
Activity
不幸的是,用户现在报告他们无法再在手机上打开更新后的应用。 Android说:android:name="com.name.library.MainActivity"
经过一些搜索后,我found the cause for this problem here:您无法更改App not installed!
的名称,而不会导致其他尝试使用此Activity
个应用的应用出现问题。我想报告问题的用户已将我的应用程序放在他们的主屏幕上,并且启动器应用程序不再找到旧的Intent
名称。这是真的吗?
但这是否会影响列出所有应用的菜单?实际上,Android应该在更新时更新Activity
的名称,不应该吗?
如何解决这个问题?我唯一的想法是使用旧名称创建一个新的Activity
,并在Activity
中添加以下代码:
onCreate(...)
但这显然不是一个令人愉快的解决方案......
答案 0 :(得分:3)
我猜你也可以使用activity-alias。
<activity-alias
android:targetActivity="com.name.library.MainActivity"
android:name=".MainActivity"
android:label="@string/label"
android:icon="@drawable/icon">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
</intent-filter>
</activity-alias>
android:name应与旧活动名称匹配
答案 1 :(得分:2)
我认为你以错误的方式做出了改变。你没有这么多选择:从用户在主屏幕上放置应用程序的快捷方式开始,shorcut指的是特定的uri(you.old.package.MainActivity),我认为你唯一能做的就是你说的,即使不是一个愉快的解决方案。另一个解决方案是用户删除并重新创建应用程序的快捷方式,因为当应用程序更改内部结构时,启动的意图始终是具有意图过滤器的意图
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
在清单中宣布;所以重新创建快捷方式将解决问题。
您应该进行更改以便让旧项目成为库项目,并创建Lite和Pro项目以使用原始项目成为一个libray项目。 通过这种方式,您的活动的uri不需要更改