1

我已经发布了一个可在英国下载的 android 应用程序,但我希望为美国发布该应用程序的(略有不同)版本目前我认为我需要为该应用程序的新版本执行以下操作...

1.将清单文件中的 'package' 属性更改为不同的内容。

2.确保在 Google Play 上只有美国可以下载该应用程序。

还有什么我还没有发现我需要做的事情,或者我还没有考虑任何其他问题吗?

格林威治标准时间 7 月 19 日 13:19 编辑- 我目前正在热心使用 TelephonyManager.getNetworkCountryIso() 作为初始国家/地区猜测,如果失败(因为没有 SIM 卡)则退回到区域设置。人们怎么想?不过,使用 GPS 也是一种选择,但这是否有点矫枉过正?

4

3 回答 3

1

既然您说您只是更改了几个字符串(我们也将 URL 视为一个字符串),我建议如下:

  1. 创建资源目录res/valuesres/values-en-rUS.

  2. 在每一个中,创建一个strings.xml资源文件

  3. 在目录中定义您的默认(英国特定)字符串值,并在文件夹中定义您res/values的美国特定字符串值。res/values-en-rUS

然后,要引用这些字符串,只需@string/my_string_name在从 XML 文档getResources().getString(R.string.my_string_name)引用它们或从代码引用它们时使用。

有关资源限定符类型的更多详细信息,请查看此页面,有关您可以使用的合格国家代码列表,请参阅此页面

我敢肯定,任何有足够决心的人都可以将他们的地区更改为美国——老实说,我不确定该地区是如何确定的——但出于所有意图和目的,这应该可以解决问题,而不必维护两个单独的应用程序。我只想评估英国用户无法访问该应用程序的美国特定功能的重要性,并考虑到这一点来确定是否值得维护两个应用程序。

编辑一些额外的搜索让我相信该区域被锁定在build.prop文件中,在您的设备生根之外无法编辑(即它不会意外发生)。也就是说,如果他们仍然必须拥有正确的选项,我可能会建议仅在第一次运行应用程序时弹出一个对话框,与用户确认语言环境,将其保存为 SharedPreference,然后以编程方式选择您的字符串基于这种偏好。这样,您仍然只维护一个应用程序,但您仍然可以灵活地处理两个区域。

于 2012-07-17T16:10:26.503 回答
0

这是对的。Play 商店针对谁可以下载以及是否可以更新两件事。第一个是包名 com.andya.myukapp -> com.andya.myusapp 应该可以工作,只要您现有的客户都不希望在两者之间自由切换(假设它是付费应用程序)

于 2012-07-17T14:37:00.130 回答
0

我最终决定最好的策略是使用 TelephonyManager 来检查网络所在的国家/地区。

TelephonyManager tm = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
String networkCountryCode = tm.getNetworkCountryIso();

如果失败,我得到了语言环境。

String locale = context.getResources().getConfiguration().locale.getCountry();

这将在应用程序启动时发生一次。然后将保存此结果并在设置屏幕中进行配置。

于 2012-08-01T15:19:44.863 回答