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>
|
||||
|
||||
<!-- 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" />
|
||||
|
|
|
@ -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) -->
|
||||
|
|
|
@ -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) -->
|
||||
|
|
|
@ -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()
|
||||
{
|
||||
|
|
|
@ -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 )
|
||||
{
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue