2016-03-27 3 views
0

こんにちは皆Android Studioを使用してナビゲーションアプリケーションを作成していて、このエラーが発生しています。 マイコードはif(ActivityCompat.checkSelfPermission)セグメントで停止します。ここで私はトーストステートメントを持っています。 AndroidManifestファイルのCOARSE_LOCATIONFINE_LOCATIONINTERNETのアクセス権を既に提供しています。 次のコードがあります。If(ActivityCompat.checkSelfPermission)セグメントからコードが返される

public class Second extends Activity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener { 
//Declaring Class Objects 
Location location; 
LocationManager lm; 
GoogleApiClient googleApiClient; 
//Data type for storing value of Longitude and Latitude 
private double fromLongitude; 
private double fromLatitude; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.second); 
    googleApiClient = new GoogleApiClient.Builder(this).addApi(LocationServices.API).addConnectionCallbacks(this).addOnConnectionFailedListener(this).build(); 
    getLocation(); 
} 

private void getLocation() { 
    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
     // TODO: Consider calling 
     // ActivityCompat#requestPermissions 
     // here to request the missing permissions, and then overriding 
     // public void onRequestPermissionsResult(int requestCode, String[] permissions, 
     //           int[] grantResults) 
     // to handle the case where the user grants the permission. See the documentation 
     // for ActivityCompat#requestPermissions for more details. 

     Toast.makeText(this,"Issue with permission",Toast.LENGTH_LONG).show(); 
     return; 
    } 
    Location location = LocationServices.FusedLocationApi.getLastLocation(googleApiClient); 
    fromLatitude = location.getLatitude(); 
    fromLongitude = location.getLongitude(); 
    Toast.makeText(this,String.valueOf(fromLatitude)+" "+String.valueOf(fromLongitude),Toast.LENGTH_LONG).show(); 
} 

//Starting Google API Client 

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

//Stopping Google API Client 
@Override 
protected void onStop() { 
    googleApiClient.disconnect(); 
    super.onStop(); 
} 

@Override 
public void onConnected(Bundle bundle) { 

} 

@Override 
public void onConnectionSuspended(int i) { 

} 

@Override 
public void onConnectionFailed(ConnectionResult connectionResult) { 

} 
} 

これは私は、IFセグメントにトーストを持っていることを、"Issue with Permission"を印刷します。

+1

に理解するために、ここで参照してください。 http://developer.android.com/training/permissions/requesting.html –

+0

兄弟に感謝しました。 –

答えて

0

は許可が既にかが付与されているチェックする この

checkSelfPermission(パーミッション)を試してみてください。
requestPermissions(String [] permissions、int requestCode)は、アクセス許可を要求します。
onRequestPermissionsResult(int permsRequestCode、String [] permissions、int [] grantResults)は、許可が許可されているかどうかの結果を確認します。この

private void askForPermission() { 
    int hasWriteContactsPermission = checkSelfPermission(Manifest.permission.CAMERA); 
    if (hasWriteContactsPermission != PackageManager.PERMISSION_GRANTED) { 
     if(!shouldShowRequestPermissionRationale(Manifest.permission.CAMERA)) { 
      showMessageOKCancel("You need to allow access to Contacts", 
        new DialogInterface.OnClickListener() { 
         @Override 
         public void onClick(DialogInterface dialog, int which) { 
          requestPermissions(new String[]{Manifest.permission.CAMERA},REQUEST_CODE_ASK_PERMISSIONS); 
         } 
        }); 
      return; 
     } 
     requestPermissions(new String[] {Manifest.permission.CAMERA}, 
       REQUEST_CODE_ASK_PERMISSIONS); 
     return; 
    } 

}

よう

要求許可は、マシュマロ、ユーザーが明示的にこれらの権限を付与する必要があるので、ちょうどあなたのマニフェストでそれらを持つことは十分ではありません詳細http://coderzpassion.com/android-new-runtime-permissions/