我的应用程序中有地图活动。我正在尝试请求位置权限,但是没有显示请求权限。我不知道为什么…
这是我的完整代码:
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {
private static final String FIREBASE_URL="https://****.firebaseio.com/";
private Firebase firebaseRef;
private LocationManager locationManager;
private GoogleMap mMap;
SupportMapFragment mapFrag;
boolean bPermissionGranted;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps2);
Firebase.setAndroidContext(this);
firebaseRef = new Firebase(FIREBASE_URL);
// Obtain the SupportMapFragment and get notified when the map is ready to be used.
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
setUpMapIfNeeded();
}
private void setUpMapIfNeeded() {
if (mMap == null) {
// Try to obtain the map from the SupportMapFragment.
mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map))
.getMap();
if (mMap != null) {
CameraUpdate center = CameraUpdateFactory.newLatLng(new LatLng(32.065483, 34.824550));
CameraUpdate zoom = CameraUpdateFactory.zoomTo(10);
mMap.moveCamera(center);
mMap.animateCamera(zoom);
}
}
}
public static final int MY_PERMISSIONS_REQUEST_LOCATION = 99;
public void checkLocationPermission() {
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED) {
// Should we show an explanation?
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (shouldShowRequestPermissionRationale(Manifest.permission.ACCESS_FINE_LOCATION)) {
showMessageOKCancel("You need to accept location permissions for using these services!,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
{
Toast.makeText(MapsActivity.this, "came here 1", Toast.LENGTH_SHORT).show();
requestPermissions(new String[]{Manifest.permission.WRITE_CONTACTS},
MY_PERMISSIONS_REQUEST_LOCATION);
}
}
});
return;
}
requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
MY_PERMISSIONS_REQUEST_LOCATION);
Toast.makeText(MapsActivity.this, "came here 2", Toast.LENGTH_SHORT).show();
return;
}
else
{
mMap.setMyLocationEnabled(true);
Toast.makeText(MapsActivity.this, "came here 3", Toast.LENGTH_SHORT).show();
}
}
}
private void showMessageOKCancel(String message, DialogInterface.OnClickListener okListener) {
new AlertDialog.Builder(MapsActivity.this)
.setMessage(message)
.setPositiveButton("OK", okListener)
.setNegativeButton("Cancel", null)
.create()
.show();
}
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
switch (requestCode) {
case MY_PERMISSIONS_REQUEST_LOCATION: {
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// permission was granted, yay!
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED &&
ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
mMap.setMyLocationEnabled(true);
}
} else {
// permission denied, boo! Disable the
// functionality that depends on this permission.
Toast.makeText(this, "Permission Denied", Toast.LENGTH_LONG).show();
}
return;
}
}
}
@Override
public void onMapReady(final GoogleMap googleMap) {
mMap=googleMap;
mMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
checkLocationPermission();
}
最后,烤面包片“出现在这里2”。我想这是因为请求没有出现。除了这些行,我是否需要在清单中写一些东西?
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
也许我需要写一些东西来使用这些权限?
再次查看logcat之后,我发现了此日志 I/Choreographer: Skipped 46 frames! The application may be doing too much work on its main thread.
这是什么意思?
花了几天时间解决此问题后,我发现未显示请求权限的原因是由于TabHost。
我试图从MapActivity请求权限,该活动是MainActivity中TabHost的一部分。现在,我知道不可能从TabHost中的活动请求权限。
在将请求权限代码从MapActivity移到MainActivity之后,它就起作用了。
我目前正在开发适用于Android的即时应用程序,我想使用相机。我在片段中请求相机权限,但没有出现权限请求对话框。 这就是我在片段中请求权限的方式: 现在,我希望显示权限请求对话框,就像应用程序本身(com.android.Application)一样。不幸的是,它没有出现在即时应用程序(com.android.instantapp)中。 此外,我发现 调用,但使用grantResults[0]=
我正在用Swagger创建一个API文档。我直接尝试了openapi 3.0。不知何故,我无法得到我的请求机构工作的描述。 但这些描述不会出现: 我想得到像《大摇大摆2》那样的东西。下面是如何将相同的代码转换为Swagger 2
我正在使用Apache Camel将数据从CSV文件加载到webservice。我是否可以显示请求和响应。以下是路线配置。。 我从数组中拆分并聚合100个项目,以作为邮件正文发送。 请让我知道如何使用上述路线显示请求和响应?
我的问题很简单,我已经请求了JSONYouTubev3数据API,但是,我想显示从链接请求的数据:https://www.googleapis.com/youtube/v3/channels?part=statistics
我为我的所有api调用创建了一个通用的构建请求方法。响应进来没问题,但没有传递到此方法之外。 我的api.ts类(片段) 在同一个类中,我定义了所有的调用,如下所示: 然后从一个组件我做 除了在。地图,res未定义。当我用普通的 返回this.http.get(...) 同样的逻辑在这里显示,它工作得很好。我做错了什么? 我正在导入这两个: 从“rxjs/可观察”导入{可观察的}; 导入'rxjs
问题内容: 我正在使用Node的模块发出 HTTP 请求,但是在上,返回的块似乎并不满足完整的请求响应。这是我的代码: 有没有办法在结束请求之前等待完整的输出?难道我做错了什么?谢谢! 问题答案: 您还应该收听“结束”事件