如何在多个android libgdx应用程序之间共享libgdx首选项文件

时间:2016-06-02 12:19:30

标签: java android libgdx sharedpreferences android-sharedpreferences

我有两个Android应用程序,其中我想要共享我的首选项文件。 最好的方法是什么? 我已经尝试在两个应用程序的清单中设置sharedUserId,但是我不确定实现我的要求所需的其他设置。

非常感谢这方面的任何帮助。

谢谢,

1 个答案:

答案 0 :(得分:0)

在AndroidApplication子类中,您需要覆盖getPreferences,以便返回其他已安装应用的首选项。我认为这样做的方法是让一个应用程序成为不做任何特殊操作的主要应用程序,并使辅助应用程序尝试使用主应用程序的首选项(如果已安装主应用程序)。

因此,仅在辅助应用中覆盖此内容:

@Override
public Preferences getPreferences (String name) {
    try {
        Context primaryAppContext = 
            createPackageContext("com.package.of.primary.app", Context.MODE_PRIVATE);
            return new AndroidPreferences(primaryAppContext.getSharedPreferences(name, Context.MODE_PRIVATE));
    catch (PackageManager.NameNotFoundException e){} //other app not installed
    catch (SecurityException e){} //other app not accessible, maybe due to permissions
    return super.getPreferences(name); //fall back to local preferences
}

如果你需要处理首先安装第二个应用程序并使用一段时间的情况,然后用户安装第一个应用程序,这将变得更加复杂。因为现在您可能希望第一个应用成为辅助应用,而辅助应用则成为主要应用。或者,如果已安装辅助应用,您可以检查主应用的安装,并将辅助应用的首选项复制到主应用。

还有一种情况是卸载了主应用程序,但用户继续使用辅助应用程序,此时首选项文件丢失,用户突然恢复默认设置。

也许安全的事情是子类Libgdx的AndroidPreferences,并使它始终写入两个应用程序中的SharedPreferences,因此它们将始终保持同步。