Ошибка подписания в указанной учетной записи. пожалуйста, выберите другой аккаунт
Я пытался соединиться с Google Drive и выбрать все файлы в списке действий. Я сделал это успешно с помощью учебника Google и шагов решения. Для более унифицированной справки позвольте мне сообщить вам, что я в основном перешел по ссылке ниже: https://github.com/googledrive/android-demos с использованием классов "BaseDemoActivity" и "PickFileWithOpenerActivity", приложение прекрасно работает в среде разработки. После того, как все работает хорошо, я сделал приложение apk-файл. И когда я пытался запустить этот apk на другом устройстве или на том же устройстве, я получил сообщение "Ошибка входа в указанную учетную запись. Пожалуйста, выберите другую учетную запись". иногда появляется другое сообщение типа: "неизвестная проблема с сервисами Google play". Я не очень понимаю, почему у меня такие сообщения, где я сделал свою ошибку. но поверьте, в среде разработки все нормально. Здесь я предоставляю вам свои полные коды, для вашего лучшего понимания.
Lib:
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GooglePlayServicesUtil;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.drive.Drive;
BaseDemoActivity.class
public abstract class BaseDemoActivity extends Activity implements
GoogleApiClient.ConnectionCallbacks,
GoogleApiClient.OnConnectionFailedListener {
private static final String TAG = "BaseDriveActivity";
/**
* DriveId of an existing folder to be used as a parent folder in
* folder operations samples.
*/
public static final String EXISTING_FOLDER_ID = "0B2EEtIjPUdX6MERsWlYxN3J6RU0";
/**
* DriveId of an existing file to be used in file operation samples..
*/
public static final String EXISTING_FILE_ID = "0ByfSjdPVs9MZTHBmMVdSeWxaNTg";
/**
* Extra for account name.
*/
protected static final String EXTRA_ACCOUNT_NAME = "account_name";
/**
* Request code for auto Google Play Services error resolution.
*/
protected static final int REQUEST_CODE_RESOLUTION = 1;
/**
* Next available request code.
*/
protected static final int NEXT_AVAILABLE_REQUEST_CODE = 2;
/**
* Google API client.
*/
private GoogleApiClient mGoogleApiClient;
/**
* Called when activity gets visible. A connection to Drive services need to
* be initiated as soon as the activity is visible. Registers
* {@code ConnectionCallbacks} and {@code OnConnectionFailedListener} on the
* activities itself.
*/
@Override
protected void onResume() {
super.onResume();
if (mGoogleApiClient == null) {
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addApi(Drive.API)
.addScope(Drive.SCOPE_FILE)
.addScope(Drive.SCOPE_APPFOLDER) // required for App Folder sample
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
}
mGoogleApiClient.connect();
}
/**
* Handles resolution callbacks.
*/
@Override
protected void onActivityResult(int requestCode, int resultCode,
Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE_RESOLUTION && resultCode == RESULT_OK) {
mGoogleApiClient.connect();
}
}
/**
* Called when activity gets invisible. Connection to Drive service needs to
* be disconnected as soon as an activity is invisible.
*/
@Override
protected void onPause() {
if (mGoogleApiClient != null) {
mGoogleApiClient.disconnect();
}
super.onPause();
}
/**
* Called when {@code mGoogleApiClient} is connected.
*/
@Override
public void onConnected(Bundle connectionHint) {
Log.i(TAG, "GoogleApiClient connected");
}
/**
* Called when {@code mGoogleApiClient} is disconnected.
*/
@Override
public void onConnectionSuspended(int cause) {
Log.i(TAG, "GoogleApiClient connection suspended");
}
/**
* Called when {@code mGoogleApiClient} is trying to connect but failed.
* Handle {@code result.getResolution()} if there is a resolution is
* available.
*/
@Override
public void onConnectionFailed(ConnectionResult result) {
Log.i(TAG, "GoogleApiClient connection failed: " + result.toString());
if (!result.hasResolution()) {
// show the localized error dialog.
GooglePlayServicesUtil.getErrorDialog(result.getErrorCode(), this, 0).show();
return;
}
try {
result.startResolutionForResult(this, REQUEST_CODE_RESOLUTION);
} catch (SendIntentException e) {
Log.e(TAG, "Exception while starting resolution activity", e);
}
}
/**
* Shows a toast message.
*/
public void showMessage(String message) {
Toast.makeText(this, message, Toast.LENGTH_LONG).show();
}
/**
* Getter for the {@code GoogleApiClient}.
*/
public GoogleApiClient getGoogleApiClient() {
return mGoogleApiClient;
}
}
PickFileWithOpenerActivity.class
public class PickFileWithOpenerActivity extends BaseDemoActivity {
private static final String TAG = "PickFileWithOpenerActivity";
private static final int REQUEST_CODE_OPENER = 1;
@Override
public void onConnected(Bundle connectionHint) {
super.onConnected(connectionHint);
IntentSender intentSender = Drive.DriveApi
.newOpenFileActivityBuilder()
.setMimeType(new String[] { "text/plain", "text/html" })
.build(getGoogleApiClient());
try {
startIntentSenderForResult(
intentSender, REQUEST_CODE_OPENER, null, 0, 0, 0);
} catch (SendIntentException e) {
Log.w(TAG, "Unable to send intent", e);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == 1 && data != null){
switch (requestCode) {
case REQUEST_CODE_OPENER:
if (resultCode == RESULT_OK) {
DriveId driveId = (DriveId) data.getParcelableExtra(
OpenFileActivityBuilder.EXTRA_RESPONSE_DRIVE_ID);
showMessage("Selected file's ID: " + driveId);
}
finish();
break;
default:
super.onActivityResult(requestCode, resultCode, data);
}
}
}
}
manifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.googledrivetestandroidapplication" >
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<activity android:name="com.example.googledrivetestandroidapplication.HomeActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".PickFileWithOpenerActivity" />
</application>
Примечание. Я сохранил [Консоль разработчика Google][2], имя проекта с именем моего разработанного проекта и имя пакета как,
package="com.example.googledrivetestandroidapplication"
в manifest.xml, в дополнительной информации я использую build.gradle.
compile 'com.android.support:appcompat-v7:22.2.0'
compile 'com.google.android.gms:play-services:7.5.0'
Я тоже пробовал по-другому, вроде; рекомендация от Silvana L. К сожалению, это не работает для меня. Что я должен делать?
Очистить кеш Сервисов Google Play (Настройки> Диспетчер приложений> Сервисы Google Play> Очистить кеш). Выключите / включите Сервисы Google Play (Настройки> Диспетчер приложений> Сервисы Google Play> Отключить). После этого вам может понадобиться обновить через Google Play еще раз. Выйдите из своей учетной записи Google на своем телефоне.
2 ответа
Вы создали учетные данные, используя ключ Android, вам нужно создать учетные данные, используя oauth 2.0 .
Перейдите в GoogleApiConsole, откройте свой проект и перейдите в
Вкладка API & auth ---> Учетные данные ---> Добавить учетные данные ---> Идентификатор клиента Oauth 2.0
Я надеюсь, что понимаю вашу проблему.
Пожалуйста, следуйте шаг, чтобы зарегистрировать приложение на консоли Google API: -
- Создать новый проект в Api Console GoogleApiConsole
- На вкладке API & auth ---> Учетные данные ---> Создать новый идентификатор клиента
- Выберите установленное приложение и выберите Android
- Зарегистрируйте свое приложение (com.example.googledrivetestandroidapplication) здесь со своим отпечатком сертификата подписи (SHA1)