2016-11-07 8 views
0

私はこのクラスを作成しました。どこに配置する必要がありますか?許可が得られなかった後のGPSの位置(SDK 23)android studio

public class DescriptionActivity extends AppCompatActivity implements GoogleApiClient.ConnectionCallbacks { 

    TextView t; 
    Button up; 
    GoogleApiClient mGoogleApiClient; 
    LocationManager locationManager; 
    LocationListener locationListener; 
    LocationServices mLastLocation; 
    private static final int PERMS_REQUEST_CODE=123; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_hr__description); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.hr_toolbar); 
     setSupportActionBar(toolbar); 
     getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_clear_white_24dp); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
     getSupportActionBar().setDisplayShowTitleEnabled(false); 
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
     t = (TextView) findViewById(R.id.test_boaz); 
     up=(Button)findViewById(R.id.upload); 
     mGoogleApiClient = new GoogleApiClient.Builder(this) 
       .addApi(Drive.API) 
       .addScope(Drive.SCOPE_FILE) 
       .addConnectionCallbacks(this) 
       .addOnConnectionFailedListener((GoogleApiClient.OnConnectionFailedListener) this) 
       .build(); 
     if(hasPermission()) 
     { 
      getGPS(); 
     } 
     else { 
      requestPerms(); 
     } 
    } 

    @Override 
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { 
     switch (requestCode) { 
      case PERMS_REQUEST_CODE: 
       if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
        // All good! 
       } else { 
        Log.d("bobbbbbbbbbbbbbbbbbb","boazboabzobaob"); 
       } 

       break; 
     } 
    } 

    private void getGPS() { 
     up.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 


      } 
     }); 
    } 

    private boolean hasPermission(){ 
      int res=0; 
      String[] permissions=new String[]{Manifest.permission.ACCESS_COARSE_LOCATION,Manifest.permission.ACCESS_FINE_LOCATION}; 
      for(String params:permissions) 
      { 
       res=checkCallingOrSelfPermission(params); 
       if(!(res==PackageManager.PERMISSION_GRANTED)) { 
        return false; 
       } 
      } 
      return true; 
     } 

     private void requestPerms(){ 
      String[] permissions=new String[]{Manifest.permission.ACCESS_COARSE_LOCATION,Manifest.permission.ACCESS_FINE_LOCATION}; 
      if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) 
      { 
      requestPermissions(permissions,PERMS_REQUEST_CODE); 
       ActivityCompat.requestPermissions(this, permissions, PERMS_REQUEST_CODE); 
      } 

     } 
    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
      case android.R.id.home: 
       onBackPressed(); 
       return true; 
      default: 
       return super.onOptionsItemSelected(item); 
     } 
    } 

    @Override 
    public void onConnected(@Nullable Bundle bundle) { 
     mLastLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient); 
     if (mLastLocation != null) { 

     } 
    } 

    @Override 
    public void onConnectionSuspended(int i) { 

    } 
} 

私はGPSをアクティブにしようとしましたが、それは常に私が権限それを修正する方法 をチェックしたいですか? は、インターネット上の多くの例に見て、私は、GPSデバイスを有効にするには、ダイアログを取得するには成功してきたが、私は場所を取得しようとするときは、Google APIのいずれかへの接続をしたいとき、私は問題

+0

エラーダイアログを投稿できますか? – NilayDani

+0

私は何のエラーもありません彼は許可を追加するように私に尋ねます –

+0

どのアクセス許可? – NilayDani

答えて

0

を持って を提供しましたGoogle Playサービスライブラリ(Google Sign-In、Games、 ドライブなど)では、GoogleApiClient(「Google API クライアント」)のインスタンスを作成する必要があります。 Google APIクライアントは、Google Playサービスのすべての に共通のエントリポイントを提供し、 ユーザーのデバイスと各Googleサービスとの間のネットワーク接続を管理します。

  • Google Playサービスへの接続を自動的に管理します。
  • Google Playサービスへの同期および非同期API呼び出しを実行します。

  • これが必要な場合は、 という稀なケースでGoogle Playサービスとの接続を手動で管理してください。

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.google.android.gms.location.sample.basiclocationsample" > 

    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
</manifest> 

あなたの活動にこのコードを追加します。これは、ファイルの一覧に追加

mGoogleApiClient = new GoogleApiClient.Builder(this) 
      .addApi(Drive.API) 
      .addScope(Drive.SCOPE_FILE) 
      .addConnectionCallbacks(this) 
      .addOnConnectionFailedListener(this) 
      .build() 
@Override 
    public void onConnected(Bundle connectionHint) { 
     mLastLocation = LocationServices.FusedLocationApi.getLastLocation(
       mGoogleApiClient); 
     if (mLastLocation != null) { 
      mLatitudeText.setText(String.valueOf(mLastLocation.getLatitude())); 
      mLongitudeText.setText(String.valueOf(mLastLocation.getLongitude())); 
     } 
    } 
+0

にACCESS_COARSE_LOCATIONを追加しましたか? OnCreateメソッドについて –

+0

と私はDrive.APIを持っていません。このコードを追加すると、 –

+0

が認識されません。 public void onConnected(@Nullable Bundle bundle){ mLastLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient); 場合(mLastLocation!= NULL){ } } –

0

onCreaであなたの活動における方法

+0

を動作しないそれは 'sドライブ。認識されない –

関連する問題