我已经发布了可在英国下载的Android应用程序,但我希望为美国发布一个(非常略微不同)的应用程序版本目前我相信我需要为应用程序的新版本执行以下操作。
1。将清单文件中的“package”属性更改为其他内容。
2. 确保在Google Play上只有美国可以下载该应用。
还有什么我尚未发现我需要做的,还是我还没有考虑的任何其他问题?
编辑7月19日格林威治标准时间13:19 - 我目前正在变暖使用TelephonyManager.getNetworkCountryIso()作为初始国家/地区猜测,如果失败则退回到语言环境(因为没有SIM卡) )。人们怎么想?使用GPS也是一种选择,但这有点过分吗?
答案 0 :(得分:1)
既然你说你只是改变了几个字符串(我们也认为URL只是一个字符串),我建议如下:
创建资源目录res/values
和res/values-en-rUS
。
在每个中,创建一个strings.xml
resource file
在res/values
目录中定义默认(特定于英国)的字符串值,并在res/values-en-rUS
文件夹中定义您的美国特定字符串值。
然后,要引用这些字符串,只需在从XML文档引用它们时使用@string/my_string_name
,或在从代码引用它们时使用getResources().getString(R.string.my_string_name)
。
有关资源限定符类型的详细信息,请查看this page,以及您可以使用的合格国家/地区代码列表,请参阅this page。
我确信任何有足够坚定的人都可以将他们的地区改为美国 - 我当然不确定该地区是如何确定的 - 但是出于所有意图和目的,这应该可以做到这一点,而无需维护两个单独的应用程序。我只评估英国用户无法访问应用程序的美国特定功能的重要性,并考虑到这一点,确定是否值得维护两个应用程序。
编辑一些额外的搜索让我相信该地区已锁定在build.prop
文件中,该文件在设备生根之外无法编辑(即不会意外发生) )。也就是说,如果他们仍然必须拥有正确的选项,我可能会建议只在应用程序的第一次运行时弹出一个对话框,用户确认语言环境,将其保存为SharedPreference,然后以编程方式选择你的Strings那种偏好。这样你仍然只维护一个应用程序,但你仍然可以灵活地处理这两个区域。
答案 1 :(得分:0)
这是对的。 Play商店有两件事可以下载,如果他们可以更新。第一个是packagename com.andya.myukapp - > com.andya.myusapp应该可以工作,只要你的现有客户都不希望在两者之间自由切换(假设它是付费应用程序)
答案 2 :(得分:0)
我最终决定使用TelephonyManager来检查网络的国家/地区。
TelephonyManager tm = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
String networkCountryCode = tm.getNetworkCountryIso();
如果失败了,我得到了语言环境。
String locale = context.getResources().getConfiguration().locale.getCountry();
这会在应用程序启动时发生一次。然后保存结果并在设置屏幕中进行配置。