即使设置后,帐户名也为空。
我已经看过this answer,但我确实在清单中都有<android.support.v7.widget.AppCompatRadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:button="@drawable/quiz_radiobutton"
/>
权限,并且在运行时受到保护。
以下设置正在Pixel XL仿真器API 25(Android 7.1.1)上运行。
GET_ACCOUNTS
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
private void queryAPI() {
if (mCredential.getSelectedAccountName() == null) {
if (checkSelfPermission(Manifest.permission.GET_ACCOUNTS) != PackageManager.PERMISSION_GRANTED) {
requestPermissions(new String[] {Manifest.permission.GET_ACCOUNTS}, RCP_AUTH_CRED);
return;
}
mCredential.setSelectedAccountName("test@gmail.com");
Log.d(TAG, "queryAPI: account name " + mCredential.getSelectedAccountName());
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode) {
case RCP_AUTH_CRED:
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
queryAPI();
} else {
Log.d(TAG, "onRequestPermissionsResult: " + Integer.toString(grantResults[0]));
}
break;
}
}
答案 0 :(得分:2)
使用setSelectedAccount()而不是setSelectedAccountName()。
mCredential = GoogleAccountCredential.usingOAuth2(
getApplicationContext(), Arrays.asList(SCOPES))
.setBackOff(new ExponentialBackOff());
// to set accountName manually instead of prompting user to select it
mCredential.setSelectedAccount(new Account("xyz@gmail.com", "com.android.example"));
将您的Gmail帐户作为第一个参数,将您的包名称作为第二个参数。
答案 1 :(得分:1)
这是Google帐户&#34; test@gmail.com"在设备帐户中设置?
首先,您需要在要测试的设备上设置设置/帐户/添加帐户,以设置要在应用中使用的Google帐户。仅仅通过帐户名称是不够的,该帐户必须存在于设备上。
如果用户需要使用Google帐户才能使用您的应用,您可以通过使用newChooseAccountIntent()方法触发用户,将用户引导至帐户选择屏幕,强制用户创建Google帐户。