2017-06-05 4 views
0

- 私でユーザーからの場所の権限を取得します。このような :誰もがそれを作る方法を知っている場合は enter image description heretypicaly権限ボックスで、ユーザーの実際の位置を取得しようとしているAndroidのアプリケーション

、嘆願は答えます。

+0

グーグルのための「実行時の権限アンドロイド」最初の結果は、WOUはあなたが必要なすべてを見つけることができる公式のAndroidのSDKドキュメントのページを指している必要があります – Selvin

答えて

4

以下のように、デバイスの現在の位置を使用するために実行時にアクセス許可を要求:

if (ActivityCompat.checkSelfPermission(YourActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(YourActivity.this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
     ActivityCompat.requestPermissions(YourActivity.this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 1); 
     return; 
}else{ 
    // Write you code here if permission already given. 
} 
1

あなたがマニフェストにこの

のようにそれを行うことができます。そして、

ActivityCompat.requestPermissions(this,new String[] 
{Manifest.permission.ACCESS_FINE_LOCATION}, 1); 

この機能を使用してユーザー答えを得る:あなたは、この許可要求をしたい活動に

<uses-feature android:name="android.hardware.location.gps" /> 

を:

public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { 
switch (requestCode) { 
    case 1: { 
     // If request is cancelled, the result arrays are empty. 
     if (grantResults.length > 0 
     && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 

     } else { 
      // permission denied, boo! Disable the 
      // functionality that depends on this permission. 
     } 
    return; 
    } 
     // other 'case' lines to check for other 
     // permissions this app might request 
} 
} 

ユーザーが一度それを受け入れると、アプリはそれを覚えているので、このDialogBoxをもう送信する必要はありません。彼が決めた場合、後でユーザーを無効にすることができます。その後、場所を要求する前に、あなたは許可がまだ付与されているかどうかをテストする必要があります:

public boolean checkLocationPermission() 
{ 
String permission = "android.permission.ACCESS_FINE_LOCATION"; 
int res = this.checkCallingOrSelfPermission(permission); 
return (res == PackageManager.PERMISSION_GRANTED); 
} 
1

まず、あなたが許可し、ユーザーの場所権限をチェックするためのメソッドを定義するクラスを記述する必要があります。

public class CheckPermission { 

    // CHECK FOR LOCATION PERMISSION 
    public static boolean checkPermission(Activity activity){ 
     int result = ContextCompat.checkSelfPermission(activity, Manifest.permission.ACCESS_FINE_LOCATION); 
     if (result == PackageManager.PERMISSION_GRANTED){ 

      return true; 

     } else { 

      return false; 

     } 
    } 

    //REQUEST FOR PERMISSSION 
    public static void requestPermission(Activity activity, final int code){ 

     if (ActivityCompat.shouldShowRequestPermissionRationale(activity,Manifest.permission.ACCESS_FINE_LOCATION)){ 

      Toast.makeText(activity,"GPS permission allows us to access location data. Please allow in App Settings for additional functionality.",Toast.LENGTH_LONG).show(); 

     } else { 

      ActivityCompat.requestPermissions(activity,new String[]{Manifest.permission.ACCESS_FINE_LOCATION},code); 
     } 
    } 

} 

上記の2つの静的メソッドを呼び出して、アクティビティのアクセス許可を確認または許可することができます。

public class LocationActivity extends AppCompatActivity { 


    private GPSTracker mytracker; 
    private Location myLocation; 
    private double latitude=0.0d,longitude=0.0d; 
    public final static int TAG_PERMISSION_CODE=1; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_splash_screen); 

     if(!CheckPermission.checkPermission(LocationActivity.this)) { 
      CheckPermission.requestPermission(SplashScreenActivity.this,TAG_PERMISSION_CODE); 

     } 
    } 
} 
関連する問題