2012-02-24 100 views
4

我开发了应用程序的新版本,并更改​​了启动的活动的名称。在新的应用程序版本中更改启动程序活动名称

升级之前,在清单是:

<activity 
       android:name=".Splash" 
       android:label="@string/app_name" 
       android:screenOrientation="portrait" 
       android:theme="@android:style/Theme.NoTitleBar" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

,然后我只改了名字和活动的包,现在是:

<activity 
       android:name=".view.SplashActivity" 
       ... > 
        ... 
    </activity> 

发生的事情是,经过人们从市场上下载应用程序,发射器并不令人耳目一新,它仍然呼吁通往活动的旧路。

你知道如何解决这个问题吗?

+0

忘记更改应用程序的版本属性了吗? – 2012-02-24 16:06:06

+0

在以前的版本中我有:android:versionCode =“8”android:versionName =“1.7”现在我有android:versionCode =“9” android:versionName =“2.0” – jalv1039 2012-02-24 16:14:18

回答

6

参考Things That Cannot Change

它说,

什么构成的兼容性休息一个微妙但重要的方面是Android:您的活动,服务,和接收器组成的name属性。这可能会令人惊讶,因为我们认为android:name指向实现我们的应用程序的私有代码,但它也(与清单包名称结合)该组件的正式唯一公共名称,由ComponentName类表示。

更改应用程序内部的组件名称可能会对用户产生负面影响。一些示例如下:

  • 如果更改了应用程序的主要活动的名称,则用户对其执行的任何快捷方式将不再起作用。快捷方式是直接指定应该运行的ComponentName的Intent。
  • 如果实现动态壁纸的服务的名称发生变化,那么启用动态壁纸的用户将在获取新版本的应用程序时将其壁纸恢复为系统默认值。输入法,辅助功能服务,Honeycomb的新高级Widget等也是如此。
  • 如果实现设备管理员的接收者名称发生变化,则与动态壁纸示例一样,设备管理员将在应用程序更新时被禁用。这也适用于其他类型的接收器,例如App Widgets。

所以如果可能的话,不改变在清单中声明组件的名称,或删除指向使用下面的代码,组件的任何图标。

ComponentName componentToDisable = new ComponentName("application.package.name", "packagename.ActivityClassName"); 
getPackageManager().setComponentEnabledSetting(componentToDisable, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); 

使用<intent-filter>...</intent-filter>让您的新活动将当用户点击启动图标启动同样在清单中指定新的发射活动。

+0

上面的代码是从http: //www.helloandroid.com/tutorials/removing-app-icon-launcher – 2012-02-25 11:40:51

0

如果您在手机上以调试模式启动活动,是否正确调用活动。

如果是这样的检查,如果你做以下的事情:

  • 你改变了整个包名
  • 你签了根本或没有正确

你也可以看看http://developer.android.com/guide/publishing/publishing_overview.html

无论如何。如果应用程序在您的调试手机上正确运行,则发布参数出现问题,您应该逐步浏览上述页面。

如果不是,您可能会检查路径值,如活动的包和名称以及过滤器。

相关问题