Skip to content

Commit c82e1a8

Browse files
authored
build: Adding SuppressLint for MissingPermission. (googlemaps-samples#261)
* build: Adding SuppressLint for MissingPermission. * Using NDK version 21.3.6528147 * Uninstall NDK bundle. * Fix build errors. * Fix per-flavor manifests.
1 parent fe59467 commit c82e1a8

File tree

25 files changed

+903
-58
lines changed

25 files changed

+903
-58
lines changed

.github/workflows/build.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@ jobs:
2626
with:
2727
java-version: 1.8
2828

29-
- name: Install NDK
29+
- name: Uninstall NDK
3030
run: |
31-
sudo ${ANDROID_HOME}/tools/bin/sdkmanager --install "ndk;20.0.5594570"
31+
sudo ${ANDROID_HOME}/tools/bin/sdkmanager --uninstall 'ndk-bundle'
3232
3333
- name: Build and check
3434
run: |

ApiDemos/java/app/build.gradle

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ apply plugin: 'project-report'
55

66
android {
77
compileSdkVersion 29
8-
buildToolsVersion '28.0.3'
98

109
defaultConfig {
1110
applicationId "com.example.mapdemo"
Lines changed: 169 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,169 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<!--
3+
~ Copyright 2020 Google LLC
4+
~
5+
~ Licensed under the Apache License, Version 2.0 (the "License");
6+
~ you may not use this file except in compliance with the License.
7+
~ You may obtain a copy of the License at
8+
~
9+
~ https://www.apache.org/licenses/LICENSE-2.0
10+
~
11+
~ Unless required by applicable law or agreed to in writing, software
12+
~ distributed under the License is distributed on an "AS IS" BASIS,
13+
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
~ See the License for the specific language governing permissions and
15+
~ limitations under the License.
16+
-->
17+
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
18+
package="com.example.mapdemo">
19+
20+
<!--
21+
The ACCESS_COARSE/FINE_LOCATION permissions are not required to use
22+
Google Maps Android API v2, but you must specify either coarse or fine
23+
location permissions for the 'MyLocation' functionality.
24+
-->
25+
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
26+
27+
<!-- EXTERNAL_STORAGE permissions are optional for Android 6.0 onwards. -->
28+
<uses-permission
29+
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
30+
android:maxSdkVersion="22" />
31+
<uses-permission
32+
android:name="android.permission.READ_EXTERNAL_STORAGE"
33+
android:maxSdkVersion="22" />
34+
35+
<application
36+
android:allowBackup="true"
37+
android:icon="@mipmap/ic_launcher"
38+
android:label="@string/demo_title"
39+
android:supportsRtl="true"
40+
android:theme="@style/AppTheme">
41+
42+
<!--
43+
To add your Maps API key to this project:
44+
1. Create a file ApiDemos/java/app/secure.properties
45+
2. Add this line, where YOUR_API_KEY is your API key:
46+
MAPS_API_KEY=YOUR_API_KEY
47+
-->
48+
<meta-data
49+
android:name="com.google.android.geo.API_KEY"
50+
android:value="@string/maps_api_key" />
51+
52+
<activity android:name=".MainActivity">
53+
<intent-filter>
54+
<action android:name="android.intent.action.MAIN" />
55+
<category android:name="android.intent.category.LAUNCHER" />
56+
</intent-filter>
57+
</activity>
58+
<activity
59+
android:name=".BasicMapDemoActivity"
60+
android:label="@string/basic_map_demo_label" />
61+
<activity
62+
android:name=".CameraDemoActivity"
63+
android:label="@string/camera_demo_label" />
64+
<activity
65+
android:name=".CameraClampingDemoActivity"
66+
android:label="@string/camera_clamping_demo_label" />
67+
<activity
68+
android:name=".CircleDemoActivity"
69+
android:label="@string/circle_demo_label" />
70+
<activity
71+
android:name=".EventsDemoActivity"
72+
android:label="@string/events_demo_label" />
73+
<activity
74+
android:name=".GroundOverlayDemoActivity"
75+
android:label="@string/ground_overlay_demo_label" />
76+
<activity
77+
android:name=".IndoorDemoActivity"
78+
android:label="@string/indoor_demo_label" />
79+
<activity
80+
android:name=".LayersDemoActivity"
81+
android:label="@string/layers_demo_label" />
82+
<activity
83+
android:name=".LiteDemoActivity"
84+
android:label="@string/lite_demo_label" />
85+
<activity
86+
android:name=".LiteListDemoActivity"
87+
android:label="@string/lite_list_demo_label" />
88+
<activity
89+
android:name=".LocationSourceDemoActivity"
90+
android:label="@string/location_source_demo_label" />
91+
<activity
92+
android:name=".MapInPagerDemoActivity"
93+
android:label="@string/map_in_pager_demo_label" />
94+
<activity
95+
android:name=".MarkerDemoActivity"
96+
android:label="@string/marker_demo_label" />
97+
<activity
98+
android:name=".MarkerCloseInfoWindowOnRetapDemoActivity"
99+
android:label="@string/marker_close_info_window_on_retap_demo_label" />
100+
<activity
101+
android:name=".polyline.PolylineDemoActivity"
102+
android:label="@string/polyline_demo_label" />
103+
<activity
104+
android:name=".MultiMapDemoActivity"
105+
android:label="@string/multi_map_demo_label" />
106+
<activity
107+
android:name=".MyLocationDemoActivity"
108+
android:label="@string/my_location_demo_label" />
109+
<activity
110+
android:name=".OptionsDemoActivity"
111+
android:label="@string/options_demo_label" />
112+
<activity
113+
android:name=".PolygonDemoActivity"
114+
android:label="@string/polygon_demo_label" />
115+
<activity
116+
android:name=".ProgrammaticDemoActivity"
117+
android:label="@string/programmatic_demo_label" />
118+
<activity
119+
android:name=".RawMapViewDemoActivity"
120+
android:label="@string/raw_map_view_demo_label" />
121+
<activity
122+
android:name=".RetainMapDemoActivity"
123+
android:label="@string/retain_map_demo_label" />
124+
<activity
125+
android:name=".SaveStateDemoActivity"
126+
android:label="@string/save_state_demo_label" />
127+
<activity
128+
android:name=".SnapshotDemoActivity"
129+
android:label="@string/snapshot_demo_label" />
130+
<activity
131+
android:name=".SplitStreetViewPanoramaAndMapDemoActivity"
132+
android:label="@string/split_street_view_panorama_and_map_demo_label" />
133+
<activity
134+
android:name=".StreetViewPanoramaBasicDemoActivity"
135+
android:label="@string/street_view_panorama_basic_demo_label" />
136+
<activity
137+
android:name=".StreetViewPanoramaEventsDemoActivity"
138+
android:label="@string/street_view_panorama_events_demo_label" />
139+
<activity
140+
android:name=".StreetViewPanoramaNavigationDemoActivity"
141+
android:label="@string/street_view_panorama_navigation_demo_label" />
142+
<activity
143+
android:name=".StreetViewPanoramaOptionsDemoActivity"
144+
android:label="@string/street_view_panorama_options_demo_label" />
145+
<activity
146+
android:name=".StreetViewPanoramaViewDemoActivity"
147+
android:label="@string/street_view_panorama_view_demo_label" />
148+
<activity
149+
android:name=".StyledMapDemoActivity"
150+
android:label="@string/styled_map_demo_label" />
151+
<activity
152+
android:name=".TagsDemoActivity"
153+
android:label="@string/tags_demo_label" />
154+
<activity
155+
android:name=".TileCoordinateDemoActivity"
156+
android:label="@string/tile_coordinate_demo_label" />
157+
<activity
158+
android:name=".TileOverlayDemoActivity"
159+
android:label="@string/tile_overlay_demo_label" />
160+
<activity
161+
android:name=".UiSettingsDemoActivity"
162+
android:label="@string/ui_settings_demo_label" />
163+
<activity
164+
android:name=".VisibleRegionDemoActivity"
165+
android:label="@string/visible_region_demo_label" />
166+
167+
</application>
168+
169+
</manifest>

ApiDemos/java/app/src/gms/java/com/example/mapdemo/LayersDemoActivity.java

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
package com.example.mapdemo;
1717

18+
import android.annotation.SuppressLint;
1819
import com.google.android.gms.maps.GoogleMap;
1920
import com.google.android.gms.maps.OnMapReadyCallback;
2021
import com.google.android.gms.maps.SupportMapFragment;
@@ -73,17 +74,17 @@ protected void onCreate(Bundle savedInstanceState) {
7374
super.onCreate(savedInstanceState);
7475
setContentView(R.layout.layers_demo);
7576

76-
mSpinner = (Spinner) findViewById(R.id.layers_spinner);
77+
mSpinner = findViewById(R.id.layers_spinner);
7778
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
7879
this, R.array.layers_array, android.R.layout.simple_spinner_item);
7980
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
8081
mSpinner.setAdapter(adapter);
8182
mSpinner.setOnItemSelectedListener(this);
8283

83-
mTrafficCheckbox = (CheckBox) findViewById(R.id.traffic);
84-
mMyLocationCheckbox = (CheckBox) findViewById(R.id.my_location);
85-
mBuildingsCheckbox = (CheckBox) findViewById(R.id.buildings);
86-
mIndoorCheckbox = (CheckBox) findViewById(R.id.indoor);
84+
mTrafficCheckbox = findViewById(R.id.traffic);
85+
mMyLocationCheckbox = findViewById(R.id.my_location);
86+
mBuildingsCheckbox = findViewById(R.id.buildings);
87+
mIndoorCheckbox = findViewById(R.id.indoor);
8788

8889
SupportMapFragment mapFragment =
8990
(SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
@@ -129,6 +130,7 @@ public void onMyLocationToggled(View view) {
129130
updateMyLocation();
130131
}
131132

133+
@SuppressLint("MissingPermission")
132134
private void updateMyLocation() {
133135
if (!checkReady()) {
134136
return;
@@ -151,6 +153,7 @@ private void updateMyLocation() {
151153
}
152154
}
153155

156+
@SuppressLint("MissingPermission")
154157
@Override
155158
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] results) {
156159
if (requestCode != LOCATION_PERMISSION_REQUEST_CODE) {

ApiDemos/java/app/src/gms/java/com/example/mapdemo/LocationSourceDemoActivity.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@
1515

1616
package com.example.mapdemo;
1717

18+
import android.Manifest.permission;
19+
import android.content.pm.PackageManager;
20+
import androidx.core.app.ActivityCompat;
1821
import com.google.android.gms.maps.GoogleMap;
1922
import com.google.android.gms.maps.GoogleMap.OnMapLongClickListener;
2023
import com.google.android.gms.maps.LocationSource;
@@ -89,7 +92,7 @@ protected void onCreate(Bundle savedInstanceState) {
8992
mLocationSource = new LongPressLocationSource();
9093

9194
SupportMapFragment mapFragment =
92-
(SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
95+
(SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
9396
mapFragment.getMapAsync(this);
9497
}
9598

@@ -109,6 +112,13 @@ protected void onPause() {
109112
public void onMapReady(GoogleMap map) {
110113
map.setLocationSource(mLocationSource);
111114
map.setOnMapLongClickListener(mLocationSource);
115+
116+
if (ActivityCompat.checkSelfPermission(this, permission.ACCESS_FINE_LOCATION)
117+
!= PackageManager.PERMISSION_GRANTED
118+
&& ActivityCompat.checkSelfPermission(this, permission.ACCESS_COARSE_LOCATION)
119+
!= PackageManager.PERMISSION_GRANTED) {
120+
return;
121+
}
112122
map.setMyLocationEnabled(true);
113123
}
114124
}

ApiDemos/java/app/src/gms/java/com/example/mapdemo/UiSettingsDemoActivity.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414

1515
package com.example.mapdemo;
1616

17+
import android.Manifest.permission;
18+
import android.annotation.SuppressLint;
1719
import com.google.android.gms.maps.GoogleMap;
1820
import com.google.android.gms.maps.OnMapReadyCallback;
1921
import com.google.android.gms.maps.SupportMapFragment;
@@ -63,7 +65,7 @@ protected void onCreate(Bundle savedInstanceState) {
6365
mMyLocationLayerCheckbox = (CheckBox) findViewById(R.id.mylocationlayer_toggle);
6466

6567
SupportMapFragment mapFragment =
66-
(SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
68+
(SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
6769
mapFragment.getMapAsync(this);
6870
}
6971

@@ -84,11 +86,18 @@ public void onMapReady(GoogleMap map) {
8486
mUiSettings.setZoomControlsEnabled(isChecked(R.id.zoom_buttons_toggle));
8587
mUiSettings.setCompassEnabled(isChecked(R.id.compass_toggle));
8688
mUiSettings.setMyLocationButtonEnabled(isChecked(R.id.mylocationbutton_toggle));
87-
mMap.setMyLocationEnabled(isChecked(R.id.mylocationlayer_toggle));
8889
mUiSettings.setScrollGesturesEnabled(isChecked(R.id.scroll_toggle));
8990
mUiSettings.setZoomGesturesEnabled(isChecked(R.id.zoom_gestures_toggle));
9091
mUiSettings.setTiltGesturesEnabled(isChecked(R.id.tilt_toggle));
9192
mUiSettings.setRotateGesturesEnabled(isChecked(R.id.rotate_toggle));
93+
94+
if (ActivityCompat.checkSelfPermission(this, permission.ACCESS_FINE_LOCATION)
95+
!= PackageManager.PERMISSION_GRANTED
96+
&& ActivityCompat.checkSelfPermission(this, permission.ACCESS_COARSE_LOCATION)
97+
!= PackageManager.PERMISSION_GRANTED) {
98+
return;
99+
}
100+
mMap.setMyLocationEnabled(isChecked(R.id.mylocationlayer_toggle));
92101
}
93102

94103
/**
@@ -207,6 +216,7 @@ public void requestLocationPermission(int requestCode) {
207216
}
208217
}
209218

219+
@SuppressLint("MissingPermission")
210220
@Override
211221
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
212222
@NonNull int[] grantResults) {

ApiDemos/java/app/src/main/AndroidManifest.xml

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -67,9 +67,6 @@
6767
<activity
6868
android:name=".CircleDemoActivity"
6969
android:label="@string/circle_demo_label" />
70-
<activity
71-
android:name=".CloudBasedMapStylingDemoActivity"
72-
android:label="@string/cloud_styling_label" />
7370
<activity
7471
android:name=".EventsDemoActivity"
7572
android:label="@string/events_demo_label" />
@@ -100,9 +97,6 @@
10097
<activity
10198
android:name=".MarkerCloseInfoWindowOnRetapDemoActivity"
10299
android:label="@string/marker_close_info_window_on_retap_demo_label" />
103-
<activity
104-
android:name=".MarkerCollisionDemoActivity"
105-
android:label="@string/marker_collision_label" />
106100
<activity
107101
android:name=".polyline.PolylineDemoActivity"
108102
android:label="@string/polyline_demo_label" />

0 commit comments

Comments
 (0)