我试图制作一个测试应用程序,这样我就可以使用LocationManager,但我甚至无法在运行时通过新的愚蠢的权限请求。我做错了什么,为什么他们让这变得如此混乱/复杂?
public class MainActivity extends AppCompatActivity {
private static final int LOCATION_GROUP_PERMISSION_REQUEST = 1;
private boolean locationPermissionGranted = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getLocationPermission();
if(locationPermissionGranted) {
LocationManager locationManager =
(LocationManager) getSystemService(Context.LOCATION_SERVICE);
String provider = LocationManager.GPS_PROVIDER;
try {
Location location = locationManager.getLastKnownLocation(provider);
updateTextView(location);
} catch(SecurityException e) {
Log.e("PERMISSION_DENIED", e.getMessage());
}
}
//registerReceiver(gpsReciever, new IntentFilter("android.location.PROVIDERS_CHANGED"));
}
private void updateTextView(Location location) {
Double latitude = location.getLatitude();
Double longitude = location.getLongitude();
TextView view = (TextView) findViewById(R.id.textView);
view.setText(getString(R.string.lat_long_string, latitude, longitude));
}
private void getLocationPermission() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (ContextCompat.checkSelfPermission(this, Manifest.permission_group.LOCATION)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission_group.LOCATION},
LOCATION_GROUP_PERMISSION_REQUEST);
}
}
}
@Override
public void onRequestPermissionsResult(int requestCode,
@NonNull String permissions[],
@NonNull int[] grantResults) {
// Make sure it's our original READ_CONTACTS request
if (requestCode == LOCATION_GROUP_PERMISSION_REQUEST) {
if (grantResults.length == 1 &&
grantResults[0] == PackageManager.PERMISSION_GRANTED) {
locationPermissionGranted = true;
}
}
}
}
在Marshmallow中请求权限组位置的正确方法是什么?
您不需要。您在运行时请求权限,而不是权限组。从代码中删除所有引用权限组的内容(例如,Manifest.permission_group. LOCATION
)。将其替换为引用权限的代码(例如,Manifest.permission.ACCESS_FINE_LOCATION
)。
在Android Marshmallow中,当需要权限时,应该在运行时请求权限,而不是在安装应用程序时一次请求所有权限。然而,我似乎只能从活动中请求权限,这是一个问题,因为我的应用程序只包含服务。(你可能会问,这是为什么?该应用程序内置了一个Android Wear watch face,手机只需查找附近的照片即可发送到手表,无需任何活动。但它确实需要位置权限。) 那么,有没有办法向服务请求权限?
问题内容: 我发现了一些在servlet中获取ip的方法。但我不知道哪一个是正确的,为什么。 1: 2: 3: 问题答案: 答案很复杂。 如果您的Servlet在反向代理或负载平衡器后面的Web服务器上运行,则可以将该Web代理配置为注入请求标头,该标头提供了请求来自的IP地址。不同的反向代理将注入不同的标头。请查阅您的(前端)服务器的文档。 如果您的客户端使用(转发)代理,则它 可能会 插入标头
我做错了什么?
问题内容: 我正在测试我的应用,即使清单中已经定义了,它也会被强制关闭。我在某处已经读到,如果我在运行时请求权限,则不会强制关闭您的应用程序。我也已经阅读了这个android文档,用于请求运行时权限。 因此,我知道我们可以请求一个如下所示的权限,该权限在android文档中有所提及。 上面的代码具有获取结果的回调方法。 我的问题是要向用户确切请求权限?我们应该在应用启动时使用请求权限还是应该在需要
问题内容: 我正在尝试将log4j配置为使用,但我不断收到中继访问被拒绝的错误。在笔记本电脑上直接从共享托管环境执行代码时,出现此错误。 这是相关的配置: 如果改用,则会收到身份验证错误。我的主机位于DreamHost上,因此如果有人使用DreamHost电子邮件帐户设置了log4j,则可获赠积分。 问题答案: 原来我只是把属性都弄错了。应该:
假设您有这样一种方法: 在整个应用程序中,如果要将文件保存到外部存储,可以执行以下操作。。。 这是一个简化的示例,所以不要讨论我关于阻止UI、正确处理异常等的情况。如果您不喜欢文件保存,您可以想象一个或或其他任何东西。关键是它是一个需要权限的操作,它返回一些值,并且在整个应用程序中使用。 在Android中 但是在新的Marshmallow(API 23)运行时权限模型中,在您可以将文件保存到外部