android: increase target API to Pie(GP requirements), implement requesting permissions

This commit is contained in:
Alibek Omarov 2019-11-29 19:42:48 +03:00
parent 906e6ece0b
commit 3369cca3e6
7 changed files with 85 additions and 10 deletions

View file

@ -69,7 +69,7 @@
</application>
<!-- Some devices with Android 2.2 should support native activity, it was in unstable hidden API -->
<uses-sdk android:minSdkVersion="3" android:targetSdkVersion="19" />
<uses-sdk android:minSdkVersion="3" android:targetSdkVersion="28" />
<!-- OpenGL ES 1.1 -->
<uses-feature android:glEsVersion="0x00010000" />

View file

@ -9,6 +9,7 @@
<string name="finish">Конец</string>
<string name="exit">Выход</string>
<string name="text_res_path">Путь к игровым ресурсам</string>
<string name="no_permissions">Нет разрешений, закрываюсь...</string>
<!-- Generic -->
<!-- Launcher(tabs) -->

View file

@ -14,6 +14,7 @@
<string name="finish">Finish</string>
<string name="exit">Exit</string>
<string name="text_res_path">Path to game resources</string>
<string name="no_permissions">No permissions, closing...</string>
<!-- Generic -->
<!-- Launcher(tabs) -->

View file

@ -2,6 +2,7 @@ package su.xash.engine;
import android.app.*;
import android.content.*;
import android.content.pm.*;
import android.graphics.*;
import android.graphics.drawable.*;
import android.net.*;
@ -18,6 +19,8 @@ import java.net.*;
import org.json.*;
import android.preference.*;
import su.xash.fwgslib.*;
import android.Manifest;
public class LauncherActivity extends Activity
{
@ -37,10 +40,11 @@ public class LauncherActivity extends Activity
static LinearLayout rodirSettings; // to easy show/hide
static int mEngineWidth, mEngineHeight;
final static int REQUEST_PERMISSIONS = 42;
@Override
protected void onCreate(Bundle savedInstanceState)
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
//super.setTheme( 0x01030005 );
@ -263,10 +267,28 @@ public class LauncherActivity extends Activity
hideRodirSettings( !useRoDir.isChecked() );
updateResolutionResult();
toggleResolutionFields();
FWGSLib.applyPermissions( this, new String[] { Manifest.permission.WRITE_EXTERNAL_STORAGE }, REQUEST_PERMISSIONS );
if( !mPref.getBoolean("successfulRun",false) )
showFirstRun();
}
@Override
public void onRequestPermissionsResult( int requestCode, String[] permissions, int[] grantResults )
{
if( requestCode == REQUEST_PERMISSIONS )
{
if( grantResults[0] == PackageManager.PERMISSION_DENIED )
{
Toast.makeText( this, R.string.no_permissions, Toast.LENGTH_LONG ).show();
finish();
}
else
{
// open again?
}
}
}
@Override
public void onResume()
{

View file

@ -34,6 +34,7 @@ import su.xash.engine.R;
import su.xash.engine.XashConfig;
import su.xash.engine.JoystickHandler;
import android.provider.Settings.Secure;
import android.Manifest;
import su.xash.fwgslib.*;
import android.sax.*;
@ -88,6 +89,8 @@ public class XashActivity extends Activity {
public final static byte JOY_AXIS_YAW = 3;
public final static byte JOY_AXIS_RT = 4;
public final static byte JOY_AXIS_LT = 5;
final static int REQUEST_PERMISSIONS = 42;
// Preferences
public static SharedPreferences mPref = null;
@ -128,12 +131,14 @@ public class XashActivity extends Activity {
// landscapeSensor is not supported until API9
if( sdk < 9 )
setRequestedOrientation( 0 );
mPref = this.getSharedPreferences( "engine", 0 );
mUseRoDir = mPref.getBoolean("use_rodir", false);
mWriteDir = mPref.getString("writedir", FWGSLib.getExternalFilesDir( this ));
FWGSLib.applyPermissions( this, new String[] { Manifest.permission.WRITE_EXTERNAL_STORAGE }, REQUEST_PERMISSIONS );
// just in case
if( mWriteDir.length() == 0 )
{
@ -157,6 +162,23 @@ public class XashActivity extends Activity {
}
}
@Override
public void onRequestPermissionsResult( int requestCode, String[] permissions, int[] grantResults )
{
if( requestCode == REQUEST_PERMISSIONS )
{
if( grantResults[0] == PackageManager.PERMISSION_DENIED )
{
Toast.makeText( this, R.string.no_permissions, Toast.LENGTH_LONG ).show();
finish();
}
else
{
// open again?
}
}
}
@Override
public void onActivityResult( int requestCode, int resultCode, Intent resultData )
{

View file

@ -1,7 +1,9 @@
package su.xash.fwgslib;
import android.Manifest;
import android.app.*;
import android.content.*;
import android.content.pm.*;
import android.graphics.*;
import android.graphics.drawable.*;
import android.net.*;
@ -14,6 +16,8 @@ import android.view.*;
import android.widget.*;
import java.io.*;
import java.net.*;
import java.lang.*;
import java.util.*;
import org.json.*;
import android.preference.*;
@ -222,10 +226,35 @@ public class FWGSLib
catch( Exception e )
{
}
}
}
}
}
public static void applyPermissions( final Activity act, final String permissions[], final int code )
{
if( sdk >= 23 )
{
List<String> requestPermissions = new ArrayList<String>();
for( int i = 0; i < permissions.length; i++ )
{
if( act.checkSelfPermission(permissions[i]) != PackageManager.PERMISSION_GRANTED )
{
requestPermissions.add(permissions[i]);
}
}
if( !requestPermissions.isEmpty() )
{
String[] requestPermissionsArray = new String[requestPermissions.size()];
for( int i = 0; i < requestPermissions.size(); i++ )
{
requestPermissionsArray[i] = requestPermissions.get(i);
}
act.requestPermissions(requestPermissionsArray, code);
}
}
}
public static final int sdk = Integer.valueOf(Build.VERSION.SDK);
}

View file

@ -21,5 +21,5 @@ def build(bld):
jni = 'lib',
keystore = bld.path.parent.find_node('debug.keystore'),
debug = bld.env.D8_DEBUG,
target_api = 19)
target_api = 28)
return