Application Requests Not Displayed

I have map activity in my application. I am trying to request permission to access it, but the permission to request is not displayed. I have no idea why ...

This is my complete code:

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(); } 

In the end, the toast "came here 2 show." I think this is because requests do not appear. Do I need to write something in the manifest other than this line ?:

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

Maybe I need to write something to use these permissions?

After looking again at logcat, I found this log I/Choreographer: Skipped 46 frames! The application may be doing too much work on its main thread. I/Choreographer: Skipped 46 frames! The application may be doing too much work on its main thread.

What does it mean?

+1
java android android permissions
Apr 10 '16 at 12:21
source share
1 answer

After spending days on this issue, I found out that the reason permission requests are not displayed is due to TabHost.

I tried to request permissions from the Activity Map, which was part of the TabHost in MainActivity. Now I realized that it is not possible to request activity permissions in TabHost.

After I moved the request permission code from MapActivity to MainActivity, it worked.

+4
Apr 11 '16 at 19:33
source share



All Articles