Android 10 targetSdkVersion with runtime permissions, #728
This commit is contained in:
parent
fcf7272f2e
commit
c526599e20
@ -33,7 +33,7 @@ static def androidCompileSdk() { return 29 }
|
|||||||
// 14 for Support Library, 16 for sqlite-android
|
// 14 for Support Library, 16 for sqlite-android
|
||||||
static def androidMinSdk() { return 16 }
|
static def androidMinSdk() { return 16 }
|
||||||
|
|
||||||
static def androidTargetSdk() { return 22 }
|
static def androidTargetSdk() { return 29 }
|
||||||
|
|
||||||
static def versionCode() { return 1 }
|
static def versionCode() { return 1 }
|
||||||
|
|
||||||
|
@ -11,3 +11,5 @@ org.gradle.jvmargs=-Xmx1536m
|
|||||||
# This option should only be used with decoupled projects. More details, visit
|
# This option should only be used with decoupled projects. More details, visit
|
||||||
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
|
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
|
||||||
# org.gradle.parallel=true
|
# org.gradle.parallel=true
|
||||||
|
android.useAndroidX=true
|
||||||
|
android.enableJetifier=true
|
||||||
|
@ -7,7 +7,6 @@
|
|||||||
|
|
||||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
||||||
<uses-permission android:name="android.permission.INTERNET" />
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
|
||||||
|
|
||||||
<application
|
<application
|
||||||
android:allowBackup="true"
|
android:allowBackup="true"
|
||||||
|
@ -162,7 +162,7 @@ public class FilePicker extends Activity implements AdapterView.OnItemClickListe
|
|||||||
}
|
}
|
||||||
|
|
||||||
// if a parent directory exists, add it at the first position
|
// if a parent directory exists, add it at the first position
|
||||||
if (mDirectory.getParentFile() != null) {
|
if (mDirectory.getParentFile() != null && mDirectory.getParentFile().canRead()) {
|
||||||
mFilesWithParentFolder = new File[mFiles.length + 1];
|
mFilesWithParentFolder = new File[mFiles.length + 1];
|
||||||
mFilesWithParentFolder[0] = mDirectory.getParentFile();
|
mFilesWithParentFolder[0] = mDirectory.getParentFile();
|
||||||
System.arraycopy(mFiles, 0, mFilesWithParentFolder, 1,
|
System.arraycopy(mFiles, 0, mFilesWithParentFolder, 1,
|
||||||
@ -180,7 +180,7 @@ public class FilePicker extends Activity implements AdapterView.OnItemClickListe
|
|||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
setContentView(R.layout.activity_file_picker);
|
setContentView(R.layout.activity_file_picker);
|
||||||
|
|
||||||
mDefaultDirectory = getExternalFilesDir(null).getAbsolutePath();
|
mDefaultDirectory = getExternalFilesDir(null) != null ? getExternalFilesDir(null).getAbsolutePath() : "/sdcard/";
|
||||||
mFilePickerIconAdapter = new FilePickerIconAdapter(this);
|
mFilePickerIconAdapter = new FilePickerIconAdapter(this);
|
||||||
GridView gridView = (GridView) findViewById(R.id.filePickerView);
|
GridView gridView = (GridView) findViewById(R.id.filePickerView);
|
||||||
gridView.setOnItemClickListener(this);
|
gridView.setOnItemClickListener(this);
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2018 devemux86
|
* Copyright 2016-2019 devemux86
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify it under the
|
* This program is free software: you can redistribute it and/or modify it under the
|
||||||
* terms of the GNU Lesser General Public License as published by the Free Software
|
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||||
@ -14,12 +14,14 @@
|
|||||||
*/
|
*/
|
||||||
package org.oscim.android.test;
|
package org.oscim.android.test;
|
||||||
|
|
||||||
|
import android.Manifest;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
import android.location.Location;
|
import android.location.Location;
|
||||||
import android.location.LocationListener;
|
import android.location.LocationListener;
|
||||||
import android.location.LocationManager;
|
import android.location.LocationManager;
|
||||||
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
|
||||||
import org.oscim.core.MapPosition;
|
import org.oscim.core.MapPosition;
|
||||||
import org.oscim.layers.LocationLayer;
|
import org.oscim.layers.LocationLayer;
|
||||||
|
|
||||||
@ -41,17 +43,25 @@ public class LocationActivity extends BitmapTileActivity implements LocationList
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onResume() {
|
public void onRequestPermissionsResult(final int requestCode, final String[] permissions, final int[] grantResults) {
|
||||||
super.onResume();
|
if (requestCode == 0) {
|
||||||
|
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED)
|
||||||
|
enableAvailableProviders();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onStart() {
|
||||||
|
super.onStart();
|
||||||
|
|
||||||
enableAvailableProviders();
|
enableAvailableProviders();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onPause() {
|
public void onStop() {
|
||||||
super.onPause();
|
|
||||||
|
|
||||||
locationManager.removeUpdates(this);
|
locationManager.removeUpdates(this);
|
||||||
|
|
||||||
|
super.onStop();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -78,6 +88,13 @@ public class LocationActivity extends BitmapTileActivity implements LocationList
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void enableAvailableProviders() {
|
private void enableAvailableProviders() {
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||||
|
if (checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
|
||||||
|
requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
locationManager.removeUpdates(this);
|
locationManager.removeUpdates(this);
|
||||||
|
|
||||||
for (String provider : locationManager.getProviders(true)) {
|
for (String provider : locationManager.getProviders(true)) {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2018 devemux86
|
* Copyright 2016-2019 devemux86
|
||||||
* Copyright 2018 Longri
|
* Copyright 2018 Longri
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify it under the
|
* This program is free software: you can redistribute it and/or modify it under the
|
||||||
@ -15,12 +15,14 @@
|
|||||||
*/
|
*/
|
||||||
package org.oscim.android.test;
|
package org.oscim.android.test;
|
||||||
|
|
||||||
|
import android.Manifest;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
import android.location.Location;
|
import android.location.Location;
|
||||||
import android.location.LocationListener;
|
import android.location.LocationListener;
|
||||||
import android.location.LocationManager;
|
import android.location.LocationManager;
|
||||||
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
|
||||||
import org.oscim.backend.CanvasAdapter;
|
import org.oscim.backend.CanvasAdapter;
|
||||||
import org.oscim.backend.canvas.Bitmap;
|
import org.oscim.backend.canvas.Bitmap;
|
||||||
import org.oscim.backend.canvas.Color;
|
import org.oscim.backend.canvas.Color;
|
||||||
@ -78,17 +80,25 @@ public class LocationTextureActivity extends BitmapTileActivity implements Locat
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onResume() {
|
public void onRequestPermissionsResult(final int requestCode, final String[] permissions, final int[] grantResults) {
|
||||||
super.onResume();
|
if (requestCode == 0) {
|
||||||
|
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED)
|
||||||
|
enableAvailableProviders();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onStart() {
|
||||||
|
super.onStart();
|
||||||
|
|
||||||
enableAvailableProviders();
|
enableAvailableProviders();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onPause() {
|
public void onStop() {
|
||||||
super.onPause();
|
|
||||||
|
|
||||||
locationManager.removeUpdates(this);
|
locationManager.removeUpdates(this);
|
||||||
|
|
||||||
|
super.onStop();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -115,6 +125,13 @@ public class LocationTextureActivity extends BitmapTileActivity implements Locat
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void enableAvailableProviders() {
|
private void enableAvailableProviders() {
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||||
|
if (checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
|
||||||
|
requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
locationManager.removeUpdates(this);
|
locationManager.removeUpdates(this);
|
||||||
|
|
||||||
for (String provider : locationManager.getProviders(true)) {
|
for (String provider : locationManager.getProviders(true)) {
|
||||||
|
@ -9,7 +9,6 @@
|
|||||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||||
<uses-permission android:name="android.permission.INTERNET" />
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
<uses-permission android:name="android.permission.VIBRATE" />
|
<uses-permission android:name="android.permission.VIBRATE" />
|
||||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
|
||||||
|
|
||||||
<application
|
<application
|
||||||
android:name=".App"
|
android:name=".App"
|
||||||
|
@ -19,9 +19,7 @@ package org.oscim.app;
|
|||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.os.Environment;
|
|
||||||
import android.preference.PreferenceManager;
|
import android.preference.PreferenceManager;
|
||||||
|
|
||||||
import org.oscim.android.cache.TileCache;
|
import org.oscim.android.cache.TileCache;
|
||||||
import org.oscim.layers.GenericLayer;
|
import org.oscim.layers.GenericLayer;
|
||||||
import org.oscim.layers.Layer;
|
import org.oscim.layers.Layer;
|
||||||
@ -67,7 +65,7 @@ public class MapLayers {
|
|||||||
@Override
|
@Override
|
||||||
TileSource init() {
|
TileSource init() {
|
||||||
return new MapFileTileSource().setOption("file",
|
return new MapFileTileSource().setOption("file",
|
||||||
new File(Environment.getExternalStorageDirectory(), "berlin.map").getAbsolutePath());
|
new File("/sdcard/berlin.map").getAbsolutePath());
|
||||||
}
|
}
|
||||||
}, new Config("MAPNIK_VECTOR") {
|
}, new Config("MAPNIK_VECTOR") {
|
||||||
@Override
|
@Override
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* Copyright 2010, 2011, 2012 mapsforge.org
|
/* Copyright 2010, 2011, 2012 mapsforge.org
|
||||||
* Copyright 2012 Hannes Janetzek
|
* Copyright 2012 Hannes Janetzek
|
||||||
* Copyright 2016-2017 devemux86
|
* Copyright 2016-2019 devemux86
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify it under the
|
* This program is free software: you can redistribute it and/or modify it under the
|
||||||
* terms of the GNU Lesser General Public License as published by the Free Software
|
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||||
@ -15,11 +15,13 @@
|
|||||||
*/
|
*/
|
||||||
package org.oscim.app;
|
package org.oscim.app;
|
||||||
|
|
||||||
|
import android.Manifest;
|
||||||
import android.app.AlertDialog;
|
import android.app.AlertDialog;
|
||||||
import android.app.Dialog;
|
import android.app.Dialog;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
@ -73,6 +75,11 @@ public class TileMap extends MapActivity implements MapEventsReceiver {
|
|||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||||
|
if (checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED)
|
||||||
|
requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 0);
|
||||||
|
}
|
||||||
|
|
||||||
setContentView(R.layout.activity_tilemap);
|
setContentView(R.layout.activity_tilemap);
|
||||||
App.view = (MapView) findViewById(R.id.mapView);
|
App.view = (MapView) findViewById(R.id.mapView);
|
||||||
registerMapView(App.view);
|
registerMapView(App.view);
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2010, 2011, 2012 mapsforge.org
|
* Copyright 2010, 2011, 2012 mapsforge.org
|
||||||
* Copyright 2016 devemux86
|
* Copyright 2016-2019 devemux86
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify it under the
|
* This program is free software: you can redistribute it and/or modify it under the
|
||||||
* terms of the GNU Lesser General Public License as published by the Free Software
|
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||||
@ -24,11 +24,9 @@ import android.content.SharedPreferences;
|
|||||||
import android.content.SharedPreferences.Editor;
|
import android.content.SharedPreferences.Editor;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Environment;
|
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.AdapterView;
|
import android.widget.AdapterView;
|
||||||
import android.widget.GridView;
|
import android.widget.GridView;
|
||||||
|
|
||||||
import org.oscim.app.R;
|
import org.oscim.app.R;
|
||||||
import org.oscim.app.filefilter.ValidFileFilter;
|
import org.oscim.app.filefilter.ValidFileFilter;
|
||||||
|
|
||||||
@ -62,7 +60,6 @@ public class FilePicker extends Activity implements AdapterView.OnItemClickListe
|
|||||||
public static final String SELECTED_FILE = "selectedFile";
|
public static final String SELECTED_FILE = "selectedFile";
|
||||||
|
|
||||||
private static final String CURRENT_DIRECTORY = "currentDirectory";
|
private static final String CURRENT_DIRECTORY = "currentDirectory";
|
||||||
private static final String DEFAULT_DIRECTORY = Environment.getExternalStorageDirectory().getAbsolutePath();
|
|
||||||
private static final int DIALOG_FILE_INVALID = 0;
|
private static final int DIALOG_FILE_INVALID = 0;
|
||||||
// private static final int DIALOG_FILE_SELECT = 1;
|
// private static final int DIALOG_FILE_SELECT = 1;
|
||||||
private static Comparator<File> fileComparator = getDefaultFileComparator();
|
private static Comparator<File> fileComparator = getDefaultFileComparator();
|
||||||
@ -125,6 +122,7 @@ public class FilePicker extends Activity implements AdapterView.OnItemClickListe
|
|||||||
}
|
}
|
||||||
|
|
||||||
private File currentDirectory;
|
private File currentDirectory;
|
||||||
|
private String defaultDirectory;
|
||||||
private FilePickerIconAdapter filePickerIconAdapter;
|
private FilePickerIconAdapter filePickerIconAdapter;
|
||||||
private File[] files;
|
private File[] files;
|
||||||
private File[] filesWithParentFolder;
|
private File[] filesWithParentFolder;
|
||||||
@ -166,7 +164,7 @@ public class FilePicker extends Activity implements AdapterView.OnItemClickListe
|
|||||||
}
|
}
|
||||||
|
|
||||||
// if a parent directory exists, add it at the first position
|
// if a parent directory exists, add it at the first position
|
||||||
if (this.currentDirectory.getParentFile() != null) {
|
if (this.currentDirectory.getParentFile() != null && this.currentDirectory.getParentFile().canRead()) {
|
||||||
this.filesWithParentFolder = new File[this.files.length + 1];
|
this.filesWithParentFolder = new File[this.files.length + 1];
|
||||||
this.filesWithParentFolder[0] = this.currentDirectory.getParentFile();
|
this.filesWithParentFolder[0] = this.currentDirectory.getParentFile();
|
||||||
System.arraycopy(this.files, 0, this.filesWithParentFolder, 1,
|
System.arraycopy(this.files, 0, this.filesWithParentFolder, 1,
|
||||||
@ -184,6 +182,7 @@ public class FilePicker extends Activity implements AdapterView.OnItemClickListe
|
|||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
setContentView(R.layout.activity_file_picker);
|
setContentView(R.layout.activity_file_picker);
|
||||||
|
|
||||||
|
defaultDirectory = getExternalFilesDir(null) != null ? getExternalFilesDir(null).getAbsolutePath() : "/sdcard/";
|
||||||
this.filePickerIconAdapter = new FilePickerIconAdapter(this);
|
this.filePickerIconAdapter = new FilePickerIconAdapter(this);
|
||||||
GridView gridView = (GridView) findViewById(R.id.filePickerView);
|
GridView gridView = (GridView) findViewById(R.id.filePickerView);
|
||||||
gridView.setOnItemClickListener(this);
|
gridView.setOnItemClickListener(this);
|
||||||
@ -254,10 +253,9 @@ public class FilePicker extends Activity implements AdapterView.OnItemClickListe
|
|||||||
// restore the current directory
|
// restore the current directory
|
||||||
SharedPreferences preferences = getSharedPreferences(PREFERENCES_FILE,
|
SharedPreferences preferences = getSharedPreferences(PREFERENCES_FILE,
|
||||||
MODE_PRIVATE);
|
MODE_PRIVATE);
|
||||||
this.currentDirectory = new File(preferences.getString(CURRENT_DIRECTORY,
|
this.currentDirectory = new File(preferences.getString(CURRENT_DIRECTORY, defaultDirectory));
|
||||||
DEFAULT_DIRECTORY));
|
|
||||||
if (!this.currentDirectory.exists() || !this.currentDirectory.canRead()) {
|
if (!this.currentDirectory.exists() || !this.currentDirectory.canRead()) {
|
||||||
this.currentDirectory = new File(DEFAULT_DIRECTORY);
|
this.currentDirectory = new File(defaultDirectory);
|
||||||
}
|
}
|
||||||
browseToCurrentDirectory();
|
browseToCurrentDirectory();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user