2016-11-07 1 views
0

Ich habe diese Klasse, die ich erstellt habe, wo muss ich meinen letzten Standort?GPS-Standort nach Genehmigung funktioniert nicht (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) { 

    } 
} 

Ich habe versucht, GPS zu aktivieren und sie wollen, dass ich immer Berechtigungen überprüfen wie man es beheben? sahen viele Beispiele im Internet und ich habe erfolgreich Dialog zu erhalten GPS-Gerät zu aktivieren, aber wenn ich versuche Lage i Problem

+0

Können Sie Fehlerdialog posten? – NilayDani

+0

Ich habe keinen Fehler, nur er bittet mich, Berechtigungen hinzuzufügen –

+0

Welche Erlaubnis? – NilayDani

Antwort

0

habe zu erhalten, wenn Sie eine Verbindung zu einem der Google APIs bereitgestellt machen wollen In der Google Play-Services-Bibliothek (z. B. Google Sign-In, Spiele oder Google Drive) müssen Sie eine Instanz von GoogleApiClient erstellen ("Google API Client"). Der Google API-Client bietet einen gemeinsamen Einstiegspunkt für alle Google Play-Dienste und verwaltet die Netzwerkverbindung zwischen dem Gerät des Nutzers und jedem Google-Dienst.

  • verwalten automatisch die Verbindung zu Google Play-Dienste.
  • Führen Sie synchrone und asynchrone API-Aufrufe für einen der Google Play-Dienste Google aus.

  • Verwalten Sie Ihre Verbindung zu Google Play-Diensten manuell in diesen seltenen Fällen, in denen dies erforderlich ist.

Fügen Sie diese

<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> 

Fügen Sie diesen Code in Ihre Aktivität

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

hinzugefügt, wo ich diesen Code einfügen muss? auf der OnCreate-Methode? –

+0

und ich habe keine Drive.API es nicht –

+0

erkannt, wenn ich diesen Code hinzufügen öffentliche void onConnected (@Nullable Bundle-Bundle) { mLastLocation = LocationServices.FusedLocationApi.getLastLocation (mGoogleApiClient); if (mLastLocation! = Null) { } } –

0

In onCrea Datei zu manifestieren Methode in Ihrer Aktivität

+0

arbeiten Drive.API wird nicht erkannt –

Verwandte Themen