2017-04-23 21 views
-2

被拒絕使用以前的應用程序的代碼權限和所有似乎確定 - 但今天即時得到一個位置Listerner - 呼叫需要可以由用戶

調用需要可以由用戶

我有被拒絕的權限添加

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

要表明並已閱讀主題上的幾個主題,但仍有問題。你們能幫忙嗎?

public class MainActivity extends AppCompatActivity implements LocationListener 
{ 
    private LocationManager locationManager; 
    public static String locationlong; 
    public static String locationlati; 

    @SuppressWarnings("deprecation") 
    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     TextView tv = (TextView)findViewById(R.id.pig); 
     TextView cow = (TextView)findViewById(R.id.cow); 

     locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
     locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10000, 1, this); 
    } 
} 
+0

https://developer.android .com/training/permissions/requests.html – CommonsWare

回答

0

添加權限檢查在您的活動:

在你的代碼

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    TextView tv = (TextView) findViewById(R.id.pig); 
    TextView cow = (TextView) findViewById(R.id.cow); 
    if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 

     ActivityCompat.requestPermissions(this, new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION}, 0); 
    } 
    locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
    if (checkLocationPermission()) { 
     locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10000, 1, this); 
    } 


} 

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

@Override 
public void onRequestPermissionsResult(int requestCode, 
             String permissions[], int[] grantResults) { 
    switch (requestCode) { 

     case 0: { 
      if (grantResults.length > 0 
        && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
       Toast.makeText(getApplicationContext(), "Permission granted", Toast.LENGTH_SHORT).show(); 

      } else { 
       Toast.makeText(getApplicationContext(), "Permission denied", Toast.LENGTH_SHORT).show(); 
      } 
      return; 
     } 

     // other 'case' lines to check for other 
     // permissions this app might request 
    } 
} 

@Override 
public void onLocationChanged(Location location) { 

} 

@Override 
public void onStatusChanged(String provider, int status, Bundle extras) { 

} 

@Override 
public void onProviderEnabled(String provider) { 

} 

@Override 
public void onProviderDisabled(String provider) { 

} 
+0

感謝您的幫助,但這一警告似乎只出現一次,也是我有沒有這個檢查代碼。我爲什麼需要它而不是其他人。當你設定的目標或manifest..and的Android SDK編譯版本23或以上有2種許可的正常和危險 –

+0

警告將會出現。關於「您需要申請許可,在運行時,也檢查權限授予或不.. – rafsanahmad007

+0

這裏dangerous'權限列表:http://stackoverflow.com/questions/36936914/list-of-android-permissions-正常的權限和危險的權限,在-API – rafsanahmad007

0

基本上由於Android 6你要問上運行某些權限,所以用戶可以拒絕他們。

使用checkSelfPermission(..)來要求它,並覆蓋onRequestPermissionsResult看到答案。

下面是與完整的例子鏈接:

https://developer.android.com/training/permissions/requesting.html

+0

非常感謝。閱讀幾個主題,似乎有問題的實施。 遇到此 int permissionCheck = ContextCompat.checkSelfPermission(thisActivity, Manifest.permission.WRITE_CALENDAR); 但不確定要使用什麼thisActivity –

+0

那麼這取決於你在哪裏implemening它,你基本上需要的活動範圍內,如果你在活動中使用它簡單地使用「本」,以獲得活動的參考,或getActivity()在片段等等... – yanivtwin