我一直试图解决这个问题一个星期,但我没有任何成功。问题是,如果应用程序的用户试图购买订阅但未登录Google帐户并且我将其引导至Google登录屏幕,我会处理,但即使在用户登录并尝试购买订阅后,Google Play也说他需要登录Google帐户。在这一步,我一直在调试,AccountManager的getAccounts()返回数组,包括最近由用户添加的帐户。只有在我杀死该应用并再次启动它之后,Google Play才会看到用户的Google帐户并且购买效果很好。任何想法如何解决这个问题? 以下是用户点击"购买"按钮:
accountsArray = accountManager.getAccountsByType("com.google");
if(accountsArray != null && accountsArray.length >= 1){
SystemUtils.getCache(this, new CacheUtils.CallBack<Cache>() {
@Override
public void run(Cache cache) {
billingActivityCache = cache;
}
});
JSONObject payload = null;
try {
payload = new JSONObject()
.put("user", new JSONObject()
.put("id", billingActivityCache.getUser().getId()
));
} catch (JSONException e) {
e.printStackTrace();
}
Bundle buyIntentBundle = null;
try {
buyIntentBundle = mService.getBuyIntent(3, getPackageName(),
currentSku, "subs", payload.toString());
} catch (RemoteException e) {
e.printStackTrace();
}
PendingIntent pendingIntent = buyIntentBundle.getParcelable("BUY_INTENT");
try {
startIntentSenderForResult(pendingIntent.getIntentSender(),
BUY_KEY, new Intent(), Integer.valueOf(0), Integer.valueOf(0),
Integer.valueOf(0));
} catch (IntentSender.SendIntentException e) {
e.printStackTrace();
}
} else{
Intent intent = new Intent(Settings.ACTION_ADD_ACCOUNT);
intent.putExtra(Settings.EXTRA_ACCOUNT_TYPES, new String[]{"com.google"});
startActivityForResult(intent, LOGIN_GOOGLE);
}
答案 0 :(得分:0)
(不是答案的一部分但是)
首先,不要将个人信息作为捆绑包放在平面文本中
用户ID是个人信息
查看Google隐私权政策。
此处相关Q&amp; A. [更改Gmail帐户以进行应用内购买?] https://android.stackexchange.com/questions/70215/change-gmail-account-to-make-in-app-purchase