android: increase target API to Pie(GP requirements), implement requesting permissions
This commit is contained in:
parent
906e6ece0b
commit
3369cca3e6
7 changed files with 85 additions and 10 deletions
|
@ -69,7 +69,7 @@
|
||||||
</application>
|
</application>
|
||||||
|
|
||||||
<!-- Some devices with Android 2.2 should support native activity, it was in unstable hidden API -->
|
<!-- 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 -->
|
<!-- OpenGL ES 1.1 -->
|
||||||
<uses-feature android:glEsVersion="0x00010000" />
|
<uses-feature android:glEsVersion="0x00010000" />
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
<string name="finish">Конец</string>
|
<string name="finish">Конец</string>
|
||||||
<string name="exit">Выход</string>
|
<string name="exit">Выход</string>
|
||||||
<string name="text_res_path">Путь к игровым ресурсам</string>
|
<string name="text_res_path">Путь к игровым ресурсам</string>
|
||||||
|
<string name="no_permissions">Нет разрешений, закрываюсь...</string>
|
||||||
<!-- Generic -->
|
<!-- Generic -->
|
||||||
|
|
||||||
<!-- Launcher(tabs) -->
|
<!-- Launcher(tabs) -->
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
<string name="finish">Finish</string>
|
<string name="finish">Finish</string>
|
||||||
<string name="exit">Exit</string>
|
<string name="exit">Exit</string>
|
||||||
<string name="text_res_path">Path to game resources</string>
|
<string name="text_res_path">Path to game resources</string>
|
||||||
|
<string name="no_permissions">No permissions, closing...</string>
|
||||||
<!-- Generic -->
|
<!-- Generic -->
|
||||||
|
|
||||||
<!-- Launcher(tabs) -->
|
<!-- Launcher(tabs) -->
|
||||||
|
|
|
@ -2,6 +2,7 @@ package su.xash.engine;
|
||||||
|
|
||||||
import android.app.*;
|
import android.app.*;
|
||||||
import android.content.*;
|
import android.content.*;
|
||||||
|
import android.content.pm.*;
|
||||||
import android.graphics.*;
|
import android.graphics.*;
|
||||||
import android.graphics.drawable.*;
|
import android.graphics.drawable.*;
|
||||||
import android.net.*;
|
import android.net.*;
|
||||||
|
@ -18,6 +19,8 @@ import java.net.*;
|
||||||
import org.json.*;
|
import org.json.*;
|
||||||
import android.preference.*;
|
import android.preference.*;
|
||||||
import su.xash.fwgslib.*;
|
import su.xash.fwgslib.*;
|
||||||
|
import android.Manifest;
|
||||||
|
|
||||||
|
|
||||||
public class LauncherActivity extends Activity
|
public class LauncherActivity extends Activity
|
||||||
{
|
{
|
||||||
|
@ -37,10 +40,11 @@ public class LauncherActivity extends Activity
|
||||||
static LinearLayout rodirSettings; // to easy show/hide
|
static LinearLayout rodirSettings; // to easy show/hide
|
||||||
|
|
||||||
static int mEngineWidth, mEngineHeight;
|
static int mEngineWidth, mEngineHeight;
|
||||||
|
final static int REQUEST_PERMISSIONS = 42;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState)
|
protected void onCreate(Bundle savedInstanceState)
|
||||||
{
|
{
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
|
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
|
||||||
//super.setTheme( 0x01030005 );
|
//super.setTheme( 0x01030005 );
|
||||||
|
@ -263,10 +267,28 @@ public class LauncherActivity extends Activity
|
||||||
hideRodirSettings( !useRoDir.isChecked() );
|
hideRodirSettings( !useRoDir.isChecked() );
|
||||||
updateResolutionResult();
|
updateResolutionResult();
|
||||||
toggleResolutionFields();
|
toggleResolutionFields();
|
||||||
|
FWGSLib.applyPermissions( this, new String[] { Manifest.permission.WRITE_EXTERNAL_STORAGE }, REQUEST_PERMISSIONS );
|
||||||
if( !mPref.getBoolean("successfulRun",false) )
|
if( !mPref.getBoolean("successfulRun",false) )
|
||||||
showFirstRun();
|
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
|
@Override
|
||||||
public void onResume()
|
public void onResume()
|
||||||
{
|
{
|
||||||
|
|
|
@ -34,6 +34,7 @@ import su.xash.engine.R;
|
||||||
import su.xash.engine.XashConfig;
|
import su.xash.engine.XashConfig;
|
||||||
import su.xash.engine.JoystickHandler;
|
import su.xash.engine.JoystickHandler;
|
||||||
import android.provider.Settings.Secure;
|
import android.provider.Settings.Secure;
|
||||||
|
import android.Manifest;
|
||||||
|
|
||||||
import su.xash.fwgslib.*;
|
import su.xash.fwgslib.*;
|
||||||
import android.sax.*;
|
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_YAW = 3;
|
||||||
public final static byte JOY_AXIS_RT = 4;
|
public final static byte JOY_AXIS_RT = 4;
|
||||||
public final static byte JOY_AXIS_LT = 5;
|
public final static byte JOY_AXIS_LT = 5;
|
||||||
|
|
||||||
|
final static int REQUEST_PERMISSIONS = 42;
|
||||||
|
|
||||||
// Preferences
|
// Preferences
|
||||||
public static SharedPreferences mPref = null;
|
public static SharedPreferences mPref = null;
|
||||||
|
@ -128,12 +131,14 @@ public class XashActivity extends Activity {
|
||||||
// landscapeSensor is not supported until API9
|
// landscapeSensor is not supported until API9
|
||||||
if( sdk < 9 )
|
if( sdk < 9 )
|
||||||
setRequestedOrientation( 0 );
|
setRequestedOrientation( 0 );
|
||||||
|
|
||||||
mPref = this.getSharedPreferences( "engine", 0 );
|
mPref = this.getSharedPreferences( "engine", 0 );
|
||||||
|
|
||||||
mUseRoDir = mPref.getBoolean("use_rodir", false);
|
mUseRoDir = mPref.getBoolean("use_rodir", false);
|
||||||
mWriteDir = mPref.getString("writedir", FWGSLib.getExternalFilesDir( this ));
|
mWriteDir = mPref.getString("writedir", FWGSLib.getExternalFilesDir( this ));
|
||||||
|
|
||||||
|
FWGSLib.applyPermissions( this, new String[] { Manifest.permission.WRITE_EXTERNAL_STORAGE }, REQUEST_PERMISSIONS );
|
||||||
|
|
||||||
// just in case
|
// just in case
|
||||||
if( mWriteDir.length() == 0 )
|
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
|
@Override
|
||||||
public void onActivityResult( int requestCode, int resultCode, Intent resultData )
|
public void onActivityResult( int requestCode, int resultCode, Intent resultData )
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
package su.xash.fwgslib;
|
package su.xash.fwgslib;
|
||||||
|
|
||||||
|
import android.Manifest;
|
||||||
import android.app.*;
|
import android.app.*;
|
||||||
import android.content.*;
|
import android.content.*;
|
||||||
|
import android.content.pm.*;
|
||||||
import android.graphics.*;
|
import android.graphics.*;
|
||||||
import android.graphics.drawable.*;
|
import android.graphics.drawable.*;
|
||||||
import android.net.*;
|
import android.net.*;
|
||||||
|
@ -14,6 +16,8 @@ import android.view.*;
|
||||||
import android.widget.*;
|
import android.widget.*;
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.net.*;
|
import java.net.*;
|
||||||
|
import java.lang.*;
|
||||||
|
import java.util.*;
|
||||||
import org.json.*;
|
import org.json.*;
|
||||||
import android.preference.*;
|
import android.preference.*;
|
||||||
|
|
||||||
|
@ -222,10 +226,35 @@ public class FWGSLib
|
||||||
catch( Exception e )
|
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);
|
public static final int sdk = Integer.valueOf(Build.VERSION.SDK);
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,5 +21,5 @@ def build(bld):
|
||||||
jni = 'lib',
|
jni = 'lib',
|
||||||
keystore = bld.path.parent.find_node('debug.keystore'),
|
keystore = bld.path.parent.find_node('debug.keystore'),
|
||||||
debug = bld.env.D8_DEBUG,
|
debug = bld.env.D8_DEBUG,
|
||||||
target_api = 19)
|
target_api = 28)
|
||||||
return
|
return
|
||||||
|
|
Loading…
Add table
Reference in a new issue