我的Play商店帐户已发布超过100个应用程序,并且所有这些应用程序都具有此常见用户生成过程,其中包括OTP验证。值得注意的是,所有应用程序都具有相同的用户对象,这些用户对象具有特定OTP验证号码的相同属性,并以字符串形式存储在相应的String status = "VACANT";
Query query = em.createQuery("SELECT COUNT(id) FROM Beds
WHERE status=:status INNER JOIN Rooms on Beds.roomId=Rooms.id
WHERE Rooms.hostelId=:hostelId");
query.setParameter("status", status);
query.setParameter("hostelId", hostelId);
List result = query.getResultList();
return ((Long)result.get(0)).intValue();
中。
为了更好的用户体验,如果设备中安装了任何一个应用程序并且已经进行了OTP验证,我想减少用户生成过程。我想分享这个用户对象,该对象在每个应用程序SharedPreferences
中保存为字符串。
因此,当我安装 com.domain.app.cX app时,我想要的是:
1) com.domain.app.cX - > (你有经过验证的用户吗?) - >的 com.domain.app.cY
2.1) com.domain.app.cY - > (是的,我在这里,#34;用户json") - >的 com.domain.app.cX
或
2.2) com.domain.app.cY - > (不,我没有任何用户) - >的 com.domain.app.cX
3)移动以检查是否安装了 com.domain.app.cZ 并从步骤1开始执行
我拥有的选项:
1)我已阅读SharedPreferences
并了解您需要输入ContentProvider
的URI,这是特定于包名。
2)将包名称与ContentProvider
一起使用,并为任何应用获取createPackageContext
。
在这两个解决方案中,我都不知道设备上已安装了哪个应用,因此知道应用的所有SharedPreferences
和包名称的URI。
是否有任何解决方案可以利用应用程序的签名,因为所有应用程序都使用相同的证书签名。
答案 0 :(得分:0)
使用广播接收器和自定义广播。 具有共享首选项的所有应用程序中的冗余公共数据
所有应用都包含一对广播接收者和发送者。 想要验证状态的应用程序将发送广播。 收听广播的其他应用将接收它并在意图中添加验证状态并再次作为广播发送。 现在发送验证状态广播的第一个应用程序将收到最新状态并相应地更新UI。如果默认值为false,则显示验证屏幕。