问题描述
我是完全新的Android开发,但我已经与Java(和其他编程语言)工作过。
我使用的Android Studio开发我的应用程序和访问位置信息(的)。据我所知,位置服务需要的 android.permission.ACCESS_COARSE_LOCATION
和/或 android.permission.ACCESS_FINE_LOCATION
权限,但在把它们添加到我的ApplicationManifest我的应用程序仍与一个SecurityException崩溃
java.lang.SecurityException异常:客户必须有ACCESS_COARSE_LOCATION或ACCESS_FINE_LOCATION的权限来执行任意位置操作。
我遇到的麻烦有几个人等情况,但这些一般都误配售的结果(java.lang.SecurityException:需要ACCESS_FINE_LOCATION或ACCESS_COARSE_LOCATION许可),错误拼写(ACCESS_FINE_LOCATION AndroidManifest权限不被授予)或许可权字符串的不正确的大写。
下面是我的ApplicationManifest.xml
<?XML版本=1.0编码=UTF-8&GT?;
<清单的xmlns:机器人=http://schemas.android.com/apk/res/android
包=scd.tt> <使用许可权的android:NAME =android.permission.ACCESS_COARSE_LOCATION/>
<使用许可权的android:NAME =android.permission.ACCESS_FINE_LOCATION/>
<使用许可权的android:NAME =android.permission.ACCESS_NETWORK_STATE/>
<使用许可权的android:NAME =android.permission.INTERNET对/> <用途-SDK
安卓的minSdkVersion =14
机器人:targetSdkVersion =23/> <应用
机器人:allowBackup =真
机器人:图标=@的mipmap / ic_launcher_tt_v2
机器人:标签=@字符串/ APP_NAME
机器人:主题=@风格/ TT_Theme>
<活动
机器人:名字=。MainActivity
机器人:主题=@风格/ TT_Theme.NoActionBar>
&所述;意图滤光器>
<作用机器人:名字=android.intent.action.MAIN/>
<类机器人:名字=android.intent.category.LAUNCHER/>
&所述; /意图滤光器>
< /活性GT;
<活动机器人:LoginActivityNAME =机器人:主题=@风格/ TT_Theme.NoActionBar/>
<活动机器人:名字=。IndexActivity/>
< /用途>< /清单>
我甚至试图删除ACCESS_NETWORK_STATE和网上看到的,如果在应用程序需要与HTTP服务器(它成功地执行)进行通信,这将导致其他SecurityExceptions它会试图获取位置信息之前。
这好像修改我做出的AndroidManifest的权限,当我运行程序不被更新。我也试着清洁,并使用生成菜单重新生成应用程序。
更新:
下面是活动的核心;我已经删除了一些不相关的方法(如onCreateOptionsMenu()和onBack pressed(),因为他们什么都没有做的位置)
包scd.tt;进口android.app.AlertDialog;
进口android.app.Fragment;
进口android.content.DialogInterface;
进口android.content.Intent;
进口android.content.Shared preferences;
进口android.location.Location;
进口android.os.Bundle;
进口android.support.v7.app.AppCompatActivity;
进口android.util.Log;
进口android.view.Menu;
进口android.view.MenuItem;进口com.google.android.gms.common.ConnectionResult;
进口com.google.android.gms.common.api.GoogleApiClient;
进口com.google.android.gms.location.LocationListener;
进口com.google.android.gms.location.LocationRequest;
进口com.google.android.gms.location.LocationServices;进口的java.util.Map;/ **
*创建者利亚姆在2015年8月9日
* /
公共类IndexActivity扩展AppCompatActivity实现GoogleApiClient.ConnectionCallbacks,GoogleApiClient.OnConnectionFailedListener,LocationListener的{ 私人GoogleApiClient mGoogleApiClient;
私人LocationRequest mLocationRequest;
私人位置mLastLocation; @覆盖
公共无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.activity_index);
如果(调试)Log.d(TAG的onCreate()呼吁:savedInstanceState是+(savedInstanceState == NULL空:不为空)); mLocationRequest =新LocationRequest();
mLocationRequest.setInterval(10000);
mLocationRequest.setFastestInterval(1000);
mLocationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);
buildGoogleApiClient(); 如果(findViewById(R.id.index_fragment_container)!= NULL){
如果(savedInstanceState!= NULL)回报; 片段指数=新IndexFragment();
index.setArguments(getIntent()getExtras()); 。getFragmentManager()调用BeginTransaction()加(R.id.index_fragment_container,指数).commit();
}
}
@覆盖
保护无效调用onStart(){
super.onStart();
mGoogleApiClient.connect();
} @覆盖
保护无效的onStop(){
super.onStop();
mGoogleApiClient.disconnect();
} @覆盖
公共无效onConnected(束束){
如果(调试)Log.d(TAGonConnected);
mLastLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
startLocationUpdates();
} @覆盖
公共无效onConnectionSuspended(int i)以{
如果(调试)Log.d(TAG,连接暂停);
} @覆盖
公共无效onConnectionFailed(ConnectionResult connectionResult){
如果(调试)Log.d(TAG,连接失败);
} @覆盖
公共无效onLocationChanged(地点){
mLastLocation =位置;
} 保护同步无效buildGoogleApiClient(){
mGoogleApiClient =新GoogleApiClient.Builder(本)
.addConnectionCallbacks(本)
.addOnConnectionFailedListener(本)
.addApi(LocationServices.API)
。建立();
如果(调试)Log.d(TAGbuildGoogleAPIClient());
} 保护无效startLocationUpdates(){
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient,mLocationRequest,这一点);
}
}
检查这些3个环节。他们可能会帮助 -
作为评论引述你 -
这篇关于为什么AndroidManifest权限没有在我的应用程序设置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!