|
1 | 1 | package fr.free.nrw.commons.contributions;
|
2 | 2 |
|
| 3 | +import android.Manifest.permission; |
3 | 4 | import android.app.Activity;
|
4 | 5 | import android.content.Context;
|
5 | 6 | import android.content.Intent;
|
6 | 7 | import android.content.SharedPreferences;
|
| 8 | +import android.content.pm.PackageManager; |
| 9 | +import android.os.Build.VERSION; |
| 10 | +import android.os.Build.VERSION_CODES; |
7 | 11 | import android.os.Bundle;
|
8 | 12 | import android.view.Menu;
|
9 | 13 | import android.view.MenuItem;
|
|
42 | 46 | import fr.free.nrw.commons.settings.SettingsFragment;
|
43 | 47 | import fr.free.nrw.commons.theme.BaseActivity;
|
44 | 48 | import fr.free.nrw.commons.upload.worker.UploadWorker;
|
| 49 | +import fr.free.nrw.commons.utils.PermissionUtils; |
45 | 50 | import fr.free.nrw.commons.utils.ViewUtilWrapper;
|
46 | 51 | import javax.inject.Inject;
|
47 | 52 | import javax.inject.Named;
|
@@ -138,15 +143,31 @@ public void setSelectedItemId(int id) {
|
138 | 143 |
|
139 | 144 | private void setUpPager() {
|
140 | 145 | tabLayout.setOnNavigationItemSelectedListener(item -> {
|
| 146 | + if (VERSION.SDK_INT >= VERSION_CODES.M) { |
| 147 | + if (item.getTitle().equals(getString(R.string.nearby_fragment)) |
| 148 | + && checkSelfPermission(permission.READ_PHONE_STATE) |
| 149 | + != PackageManager.PERMISSION_GRANTED) { |
| 150 | + requestPhoneStatePermission(() -> { |
| 151 | + tabLayout.setSelectedItemId(NavTab.NEARBY.code()); |
| 152 | + }); |
| 153 | + return false; |
| 154 | + } |
| 155 | + } |
141 | 156 | if (!item.getTitle().equals(getString(R.string.more))) {
|
142 | 157 | // do not change title for more fragment
|
143 | 158 | setTitle(item.getTitle());
|
144 | 159 | }
|
145 | 160 | Fragment fragment = NavTab.of(item.getOrder()).newInstance();
|
146 |
| - return loadFragment(fragment,true); |
| 161 | + return loadFragment(fragment, true); |
147 | 162 | });
|
148 | 163 | }
|
149 | 164 |
|
| 165 | + private void requestPhoneStatePermission(final Runnable runnable) { |
| 166 | + PermissionUtils.checkPermissionsAndPerformAction(this, |
| 167 | + android.Manifest.permission.READ_PHONE_STATE, (Runnable) runnable::run, (Runnable) () -> { |
| 168 | + }, R.string.need_permission, R.string.read_phone_state_permission_message); |
| 169 | + } |
| 170 | + |
150 | 171 | private void setUpLoggedOutPager() {
|
151 | 172 | loadFragment(ExploreFragment.newInstance(),false);
|
152 | 173 | tabLayout.setOnNavigationItemSelectedListener(item -> {
|
|
0 commit comments