1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-24 01:54:22 +00:00

Reworked and modernised Android exporter and removed old deprecated Android ant exporter

This commit is contained in:
hogliux 2017-02-01 15:50:23 +00:00
parent 0117aace01
commit ec0485388d
15 changed files with 1352 additions and 1830 deletions

View file

@ -55,6 +55,7 @@ import android.text.InputType;
import android.util.DisplayMetrics;
import android.util.Log;
import java.lang.Runnable;
import java.lang.reflect.*;
import java.util.*;
import java.io.*;
import java.net.URL;
@ -62,8 +63,6 @@ import java.net.HttpURLConnection;
import android.media.AudioManager;
import android.media.MediaScannerConnection;
import android.media.MediaScannerConnection.MediaScannerConnectionClient;
import android.support.v4.content.ContextCompat;
import android.support.v4.app.ActivityCompat;
import android.Manifest;
$$JuceAndroidMidiImports$$ // If you get an error here, you need to re-save your project with the Projucer!
@ -120,7 +119,7 @@ public class JuceAppActivity extends Activity
public boolean isPermissionGranted (int permissionID)
{
return ContextCompat.checkSelfPermission (this, getAndroidPermissionName (permissionID)) == PackageManager.PERMISSION_GRANTED;
return getApplicationContext().checkCallingOrSelfPermission (getAndroidPermissionName (permissionID)) == PackageManager.PERMISSION_GRANTED;
}
private Map<Integer, Long> permissionCallbackPtrMap;
@ -129,11 +128,11 @@ public class JuceAppActivity extends Activity
{
String permissionName = getAndroidPermissionName (permissionID);
if (ContextCompat.checkSelfPermission (this, permissionName) != PackageManager.PERMISSION_GRANTED)
if (getApplicationContext().checkCallingOrSelfPermission (permissionName) != PackageManager.PERMISSION_GRANTED)
{
// remember callbackPtr, request permissions, and let onRequestPermissionResult call callback asynchronously
permissionCallbackPtrMap.put (permissionID, ptrToCallback);
ActivityCompat.requestPermissions (this, new String[]{permissionName}, permissionID);
requestPermissionsCompat (new String[]{permissionName}, permissionID);
}
else
{
@ -299,6 +298,27 @@ public class JuceAppActivity extends Activity
catch (java.lang.reflect.InvocationTargetException e) {}
}
void requestPermissionsCompat (String[] permissions, int requestCode)
{
Method requestPermissionsMethod = null;
try
{
requestPermissionsMethod = this.getClass().getMethod ("requestPermissions",
String[].class, int.class);
}
catch (SecurityException e) { return; }
catch (NoSuchMethodException e) { return; }
if (requestPermissionsMethod == null) return;
try
{
requestPermissionsMethod.invoke (this, permissions, requestCode);
}
catch (java.lang.IllegalArgumentException e) {}
catch (java.lang.IllegalAccessException e) {}
catch (java.lang.reflect.InvocationTargetException e) {}
}
//==============================================================================
private native void launchApp (String appFile, String appDataDir);
private native void quitApp();
@ -735,6 +755,26 @@ public class JuceAppActivity extends Activity
public void setViewName (String newName) {}
public void setSystemUiVisibilityCompat (int visibility)
{
Method systemUIVisibilityMethod = null;
try
{
systemUIVisibilityMethod = this.getClass().getMethod ("setSystemUiVisibility", int.class);
}
catch (SecurityException e) { return; }
catch (NoSuchMethodException e) { return; }
if (systemUIVisibilityMethod == null) return;
try
{
systemUIVisibilityMethod.invoke (this, visibility);
}
catch (java.lang.IllegalArgumentException e) {}
catch (java.lang.IllegalAccessException e) {}
catch (java.lang.reflect.InvocationTargetException e) {}
}
public boolean isVisible() { return getVisibility() == VISIBLE; }
public void setVisible (boolean b) { setVisibility (b ? VISIBLE : INVISIBLE); }