2014-07-19 14 views
8

Tôi đã dành vô số giờ cố gắng để tìm ra api android ổ google này, và tôi đã thất vọng bản thân mình để cốt lõi cố gắng tìm ra cách chính xác để sử dụng nó. Tôi đang sử dụng getting started link trên trang web google các nhà phát triển Android, và đây là những gì tôi đã thực hiện:Lỗi: GooglePlayServicesUtil ﹕ Đã xảy ra lỗi nội bộ. Vui lòng xem nhật ký để biết thông tin chi tiết. Làm thế nào để sửa lỗi này?

package viva.inspection.com.inspectionpicker; 

import android.app.Activity; 
import android.content.Context; 
import android.content.Intent; 
import android.content.IntentSender; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.Spinner; 

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; 
import com.google.android.gms.common.api.ResultCallback; 
import com.google.android.gms.drive.Drive; 
import com.google.android.gms.drive.DriveApi.ContentsResult; 
import com.google.android.gms.drive.DriveId; 
import com.google.android.gms.drive.MetadataChangeSet; 
import com.google.android.gms.drive.OpenFileActivityBuilder; 
import com.google.android.gms.common.api.ResultCallback; 
import com.google.android.gms.drive.Drive; 
import com.google.android.gms.drive.DriveApi.ContentsResult; 
import com.google.android.gms.drive.DriveId; 
import com.google.android.gms.drive.MetadataChangeSet; 
import com.google.android.gms.drive.OpenFileActivityBuilder; 

import java.lang.reflect.Array; 
import java.util.ArrayList; 
import java.util.Arrays; 
import java.util.List; 
import java.util.logging.Logger; 

import viva.inspection.com.inspectionpicker.MultiSpinner; 


public class MyActivity extends Activity implements MultiSpinner.MultiSpinnerListener, AdapterView.OnItemSelectedListener, GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener { 
    GoogleApiClient mGoogleApiClient; 
    final private static int RESOLVE_CONNECTION_REQUEST_CODE = 1; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_my); 
     Button save = (Button) findViewById(R.id.save); 
     //array for the tasks multi-spinner 
     String[] array = getResources().getStringArray(R.array.rooms_array); 
     List<String> rooms = new ArrayList<String>(Arrays.asList(array)); 
     // Create an ArrayAdapter using the string array and a default spinner layout 
     final Spinner roomSpinner = (Spinner) findViewById(R.id.rooms); 
     Spinner itemsSpinner = (Spinner) findViewById(R.id.inspectionItems); 
     ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, 
       R.array.rooms_array, android.R.layout.simple_spinner_item); 
     // Specify the layout to use when the list of choices appears 
     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     // Apply the adapter to the spinner 
     roomSpinner.setAdapter(
       new NothingSelectedSpinnerAdapter(
         adapter, 
         R.layout.contact_spinner_row_nothing_selected, 
         // R.layout.contact_spinner_nothing_selected_dropdown, // Optional 
         this)); 
     roomSpinner.setOnItemSelectedListener(this); 
     itemsSpinner.setOnItemSelectedListener(this); 
     final MultiSpinner multiSpinner = (MultiSpinner) findViewById(R.id.multi_spinner); 
     multiSpinner.setItems(rooms, "(Choose One)", this); 
     mGoogleApiClient = new GoogleApiClient.Builder(this) 
       .addApi(Drive.API) 
       .addScope(Drive.SCOPE_FILE) 
       .addConnectionCallbacks(this) 
       .addOnConnectionFailedListener(this) 
       .build(); 
     save.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Intent intent = new Intent(MyActivity.this, ListActivity.class); 
       intent.putExtra("NEW_VALUE", roomSpinner.getSelectedItem().toString()); 
       startActivity(intent); 
      } 
     }); 
    } 

    ... 

    @Override 
    protected void onStart() { 
     super.onStart(); 
     mGoogleApiClient.connect(); 
    } 

    @Override 
    public void onConnectionFailed(ConnectionResult connectionResult) { 
     if (connectionResult.hasResolution()) { 
      try { 
       connectionResult.startResolutionForResult(this, RESOLVE_CONNECTION_REQUEST_CODE); 
      } catch (IntentSender.SendIntentException e) { 
       // Unable to resolve, message user appropriately 
      } 
     } else { 
      GooglePlayServicesUtil.getErrorDialog(connectionResult.getErrorCode(), this, 0).show(); 
     } 
    } 

    ... 

    @Override 
    public void onConnected(Bundle bundle) { 
     Drive.DriveApi.newContents(mGoogleApiClient) 
       .setResultCallback(contentsCallback); 
    } 

    @Override 
    public void onConnectionSuspended(int i) { 

    } 

    @Override 
    protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) { 
     switch (requestCode) { 
      case RESOLVE_CONNECTION_REQUEST_CODE: 
       if (resultCode == RESULT_OK) { 
        mGoogleApiClient.connect(); 
        DriveId driveId = (DriveId) data.getParcelableExtra(
          OpenFileActivityBuilder.EXTRA_RESPONSE_DRIVE_ID); 
       } 
       break; 
     } 
    } 

    ResultCallback<ContentsResult> contentsCallback = new 
      ResultCallback<ContentsResult>() { 
       @Override 
       public void onResult(ContentsResult result) { 
        if (!result.getStatus().isSuccess()) { 
         // Handle error 
         return; 
        } 

        MetadataChangeSet metadataChangeSet = new MetadataChangeSet.Builder() 
          .setMimeType("text/html").build(); 
        IntentSender intentSender = Drive.DriveApi 
          .newCreateFileActivityBuilder() 
          .setInitialMetadata(metadataChangeSet) 
          .setInitialContents(result.getContents()) 
          .build(mGoogleApiClient); 
        try { 
         startIntentSenderForResult(intentSender, 1, null, 0, 0, 0); 
        } catch (IntentSender.SendIntentException e) { 
         // Handle the exception 
        } 
       } 
      }; 
} 

Đây là biểu hiện của tôi, và tôi không có ý tưởng manifest nên xem xét như thế nào như:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="viva.inspection.com.inspectionpicker"> 
    <uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
    <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=".ListActivity" 
      android:label="@string/app_name" 
      android:screenOrientation="portrait" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name=".MyActivity" 
      android:label="MyActivity" 
      android:exported="true"> 
      <intent-filter> 
       <action android:name="com.google.android.apps.drive.DRIVE_OPEN" /> 
       <data android:mimeType="application/vnd.google-apps.drive-sdk.1234567890" /> 
       <data android:mimeType="image/png" /> 
       <data android:mimeType="image/jpeg" /> 
       <data android:mimeType="image/jpg" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name=".InitialChoose" 
      android:label="@string/title_activity_initial_choose" 
      android:windowSoftInputMode="stateHidden"> 
     </activity> 
    </application> 

</manifest> 

Khi tôi chạy ứng dụng, một hộp thoại sẽ xuất hiện mà các tiểu bang "Unknown vấn đề với dịch vụ Google play", và sau đó trong nhật ký con mèo này xuất hiện:

Error: GooglePlayServicesUtil﹕ Internal error occurred. Please see logs for detailed information. 

Nhưng không có gì trong các bản ghi, s o một lần nữa tôi hoàn toàn bối rối. Tôi đã xem xét các câu hỏi khác và tôi thực sự đã thiết lập ứng dụng của mình bằng bảng điều khiển dành cho nhà phát triển, theo hướng dẫn trong liên kết bắt đầu ở trên.

Tôi thực sự cần trợ giúp.

Xin cảm ơn trước.

+1

Kẻ giải thích giải thích? –

Trả lời

4

Tôi đã giải quyết được sự cố của mình; có vẻ như tôi không sử dụng đúng dấu vân tay SHA1, vì vậy đó là lý do tại sao nó không thể ký và cho phép ứng dụng của tôi.

+1

Tôi có cùng một vấn đề, nhưng SHA1 của tôi có vẻ đúng, lấy từ Eclipse → Window → Preferences → Android → Xây dựng. Nhưng tôi cố gắng chỉ sử dụng hoạt động chính (được khởi chạy) cho mục đích này mà không có thẻ meta Drive trong bộ lọc ý định. –

+0

Lưu ý: Nếu bạn đã thực hiện các bước thích hợp để tích hợp SHA1.Nếu bạn vẫn gặp phải vấn đề tương tự. "Lỗi nội bộ không xác định" vui lòng kiểm tra kết nối internet của bạn. –

1

Trong trường hợp của tôi một ứng dụng xử lý tốt, nhưng một ngày nào đó nó thất bại và một hộp thoại xuất hiện với một thông điệp: "Không rõ vấn đề với dịch vụ Google Play". Sau khi cài đặt lại ứng dụng, sự cố đã biến mất.

Các vấn đề liên quan