Почему разрешения AndroidManifest не установлены в моем приложении

Я совершенно не знаком с разработкой Android, но раньше я работал с Java (и другими языками программирования).

Я использую Android Studio для разработки своего приложения, и я застрял, следуя инструкциям разработчика по доступу к информации о местоположении ( http://developer.android.com/training/location/index.html ). Я понимаю, что для служб Location требуются разрешения android.permission.ACCESS_COARSE_LOCATION и / or android.permission.ACCESS_FINE_LOCATION но после их добавления в мой ApplicationManifest, мое приложение все еще выходит из строя с помощью SecurityException

 java.lang.SecurityException: Client must have ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION permission to perform any location operations. 

Я столкнулся с несколькими другими случаями, когда у людей возникли проблемы, но они, как правило, были результатом неправильного размещения ( java.lang.SecurityException: требуется разрешение ACCESS_FINE_LOCATION или ACCESS_COARSE_LOCATION ), неправильное написание ( ACCESS_FINE_LOCATION AndroidManifest Разрешения не предоставляются ) или Неправильная капитализация строки разрешений.

Вот мой ApplicationManifest.xml

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="scd.tt" > <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="23" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher_tt_v2" android:label="@string/app_name" android:theme="@style/TT_Theme"> <activity android:name=".MainActivity" android:theme="@style/TT_Theme.NoActionBar"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".LoginActivity" android:theme="@style/TT_Theme.NoActionBar" /> <activity android:name=".IndexActivity" /> </application> </manifest> 

Я даже попытался удалить ACCESS_NETWORK_STATE и INTERNET, чтобы убедиться, что это приведет к другим SecurityExceptions, поскольку приложение требуется для связи с HTTP-сервером (который он выполняет успешно), прежде чем он попытается получить информацию о местоположении.

Кажется, что изменения, внесенные в разрешения для AndroidManifest, не обновляются при запуске программы. Я также попытался очистить и перестроить приложение, используя меню «Построение».

ОБНОВИТЬ:

Вот ядро ​​деятельности; Я удалил некоторые из несвязанных методов (например, onCreateOptionsMenu () и onBackPressed (), поскольку они не имеют никакого отношения к местоположению)

 package scd.tt; import android.app.AlertDialog; import android.app.Fragment; import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.location.Location; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import com.google.android.gms.common.ConnectionResult; import com.google.android.gms.common.api.GoogleApiClient; import com.google.android.gms.location.LocationListener; import com.google.android.gms.location.LocationRequest; import com.google.android.gms.location.LocationServices; import java.util.Map; /** * Created by Liam on 08/09/2015 */ public class IndexActivity extends AppCompatActivity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, LocationListener { private GoogleApiClient mGoogleApiClient; private LocationRequest mLocationRequest; private Location mLastLocation; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_index); if(debug) Log.d(TAG, "onCreate() called: savedInstanceState is " + (savedInstanceState == null ? "null" : "not null")); mLocationRequest = new LocationRequest(); mLocationRequest.setInterval(10000); mLocationRequest.setFastestInterval(1000); mLocationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY); buildGoogleApiClient(); if (findViewById(R.id.index_fragment_container) != null) { if (savedInstanceState != null) return; Fragment index = new IndexFragment(); index.setArguments(getIntent().getExtras()); getFragmentManager().beginTransaction().add(R.id.index_fragment_container, index).commit(); } } @Override protected void onStart() { super.onStart(); mGoogleApiClient.connect(); } @Override protected void onStop() { super.onStop(); mGoogleApiClient.disconnect(); } @Override public void onConnected(Bundle bundle) { if(debug) Log.d(TAG, "onConnected"); mLastLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient); startLocationUpdates(); } @Override public void onConnectionSuspended(int i) { if(debug) Log.d(TAG, "Connection Suspended"); } @Override public void onConnectionFailed(ConnectionResult connectionResult) { if(debug) Log.d(TAG, "Connection Failed"); } @Override public void onLocationChanged(Location location) { mLastLocation = location; } protected synchronized void buildGoogleApiClient() { mGoogleApiClient = new GoogleApiClient.Builder(this) .addConnectionCallbacks(this) .addOnConnectionFailedListener(this) .addApi(LocationServices.API) .build(); if(debug) Log.d(TAG, "buildGoogleAPIClient()"); } protected void startLocationUpdates() { LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this); } } 

Проверьте эти 3 ссылки. Они могут помочь –

  1. Android – невозможно получить местоположение gps на эмуляторе
  2. Только эмулятор ошибки ACCESS_FINE_LOCATION
  3. http://www.gitshah.com/2011/02/android-fixing-no-internet-connection.html

Как процитировано вами в комментариях –

Разрешения с уровнем защиты опасны должны быть предоставлены во время выполнения, запрашивая пользователя с SDK 23 и больше не могут быть определены только в манифесте.