Android: keep QtNative.onNewIntent() public to not break NFC usecase

Fixes: QTBUG-122456
Change-Id: If5b91d12a0ed324458d3d23d78226dbf91e3812c
Reviewed-by: Juha Vuolle <juha.vuolle@qt.io>
Reviewed-by: Tinja Paavoseppä <tinja.paavoseppa@qt.io>
This commit is contained in:
Assam Boudjelthia 2024-05-27 14:03:21 +03:00
parent 0e3aa48c09
commit 0c30c8b916

View File

@ -30,15 +30,16 @@ import javax.net.ssl.TrustManager;
import javax.net.ssl.TrustManagerFactory; import javax.net.ssl.TrustManagerFactory;
import javax.net.ssl.X509TrustManager; import javax.net.ssl.X509TrustManager;
class QtNative // ### Qt7: make private and find new API for onNewIntent()
public class QtNative
{ {
private static WeakReference<Activity> m_activity = null; private static WeakReference<Activity> m_activity = null;
private static WeakReference<Service> m_service = null; private static WeakReference<Service> m_service = null;
public static final Object m_mainActivityMutex = new Object(); // mutex used to synchronize runnable operations private static final Object m_mainActivityMutex = new Object(); // mutex used to synchronize runnable operations
private static final ApplicationStateDetails m_stateDetails = new ApplicationStateDetails(); private static final ApplicationStateDetails m_stateDetails = new ApplicationStateDetails();
public static final String QtTAG = "Qt JAVA"; static final String QtTAG = "Qt JAVA";
// a list containing all actions which could not be performed (e.g. the main activity is destroyed, etc.) // a list containing all actions which could not be performed (e.g. the main activity is destroyed, etc.)
private static final ArrayList<Runnable> m_lostActions = new ArrayList<>(); private static final ArrayList<Runnable> m_lostActions = new ArrayList<>();
@ -51,24 +52,24 @@ class QtNative
private static final Object m_appStateListenersLock = new Object(); private static final Object m_appStateListenersLock = new Object();
@UsedFromNativeCode @UsedFromNativeCode
public static ClassLoader classLoader() static ClassLoader classLoader()
{ {
return m_classLoader; return m_classLoader;
} }
public static void setClassLoader(ClassLoader classLoader) static void setClassLoader(ClassLoader classLoader)
{ {
m_classLoader = classLoader; m_classLoader = classLoader;
} }
public static void setActivity(Activity qtMainActivity) static void setActivity(Activity qtMainActivity)
{ {
synchronized (m_mainActivityMutex) { synchronized (m_mainActivityMutex) {
m_activity = new WeakReference<>(qtMainActivity); m_activity = new WeakReference<>(qtMainActivity);
} }
} }
public static void setService(Service qtMainService) static void setService(Service qtMainService)
{ {
synchronized (m_mainActivityMutex) { synchronized (m_mainActivityMutex) {
m_service = new WeakReference<>(qtMainService); m_service = new WeakReference<>(qtMainService);
@ -76,40 +77,40 @@ class QtNative
} }
@UsedFromNativeCode @UsedFromNativeCode
public static Activity activity() static Activity activity()
{ {
synchronized (m_mainActivityMutex) { synchronized (m_mainActivityMutex) {
return m_activity != null ? m_activity.get() : null; return m_activity != null ? m_activity.get() : null;
} }
} }
public static boolean isActivityValid() static boolean isActivityValid()
{ {
return m_activity != null && m_activity.get() != null; return m_activity != null && m_activity.get() != null;
} }
@UsedFromNativeCode @UsedFromNativeCode
public static Service service() static Service service()
{ {
synchronized (m_mainActivityMutex) { synchronized (m_mainActivityMutex) {
return m_service != null ? m_service.get() : null; return m_service != null ? m_service.get() : null;
} }
} }
public static boolean isServiceValid() static boolean isServiceValid()
{ {
return m_service != null && m_service.get() != null; return m_service != null && m_service.get() != null;
} }
@UsedFromNativeCode @UsedFromNativeCode
public static Context getContext() { static Context getContext() {
if (isActivityValid()) if (isActivityValid())
return m_activity.get(); return m_activity.get();
return service(); return service();
} }
@UsedFromNativeCode @UsedFromNativeCode
public static String[] getStringArray(String joinedString) static String[] getStringArray(String joinedString)
{ {
return joinedString.split(","); return joinedString.split(",");
} }
@ -162,7 +163,7 @@ class QtNative
} }
@UsedFromNativeCode @UsedFromNativeCode
public static boolean openURL(Context context, String url, String mime) static boolean openURL(Context context, String url, String mime)
{ {
final Uri uri = getUriWithValidPermission(context, url, "r"); final Uri uri = getUriWithValidPermission(context, url, "r");
if (uri == null) { if (uri == null) {
@ -201,39 +202,39 @@ class QtNative
} }
// Keep in sync with src/corelib/global/qnamespace.h // Keep in sync with src/corelib/global/qnamespace.h
public static class ApplicationState { static class ApplicationState {
static final int ApplicationSuspended = 0x0; static final int ApplicationSuspended = 0x0;
static final int ApplicationHidden = 0x1; static final int ApplicationHidden = 0x1;
static final int ApplicationInactive = 0x2; static final int ApplicationInactive = 0x2;
static final int ApplicationActive = 0x4; static final int ApplicationActive = 0x4;
} }
public static class ApplicationStateDetails { static class ApplicationStateDetails {
int state = ApplicationState.ApplicationSuspended; int state = ApplicationState.ApplicationSuspended;
boolean nativePluginIntegrationReady = false; boolean nativePluginIntegrationReady = false;
boolean isStarted = false; boolean isStarted = false;
} }
public static ApplicationStateDetails getStateDetails() static ApplicationStateDetails getStateDetails()
{ {
return m_stateDetails; return m_stateDetails;
} }
public static void setStarted(boolean started) static void setStarted(boolean started)
{ {
m_stateDetails.isStarted = started; m_stateDetails.isStarted = started;
notifyAppStateDetailsChanged(m_stateDetails); notifyAppStateDetailsChanged(m_stateDetails);
} }
@UsedFromNativeCode @UsedFromNativeCode
public static void notifyNativePluginIntegrationReady(boolean ready) static void notifyNativePluginIntegrationReady(boolean ready)
{ {
m_stateDetails.nativePluginIntegrationReady = ready; m_stateDetails.nativePluginIntegrationReady = ready;
notifyNativePluginIntegrationReadyChanged(ready); notifyNativePluginIntegrationReadyChanged(ready);
notifyAppStateDetailsChanged(m_stateDetails); notifyAppStateDetailsChanged(m_stateDetails);
} }
public static void setApplicationState(int state) static void setApplicationState(int state)
{ {
synchronized (m_mainActivityMutex) { synchronized (m_mainActivityMutex) {
m_stateDetails.state = state; m_stateDetails.state = state;
@ -276,12 +277,12 @@ class QtNative
// Post a runnable to Main (UI) Thread if the app is active, // Post a runnable to Main (UI) Thread if the app is active,
// otherwise, queue it to be posted when the the app is active again // otherwise, queue it to be posted when the the app is active again
public static void runAction(Runnable action) static void runAction(Runnable action)
{ {
runAction(action, true); runAction(action, true);
} }
public static void runAction(Runnable action, boolean queueWhenInactive) static void runAction(Runnable action, boolean queueWhenInactive)
{ {
synchronized (m_mainActivityMutex) { synchronized (m_mainActivityMutex) {
final Looper mainLooper = Looper.getMainLooper(); final Looper mainLooper = Looper.getMainLooper();
@ -328,7 +329,7 @@ class QtNative
runAction(() -> view.setVisibility(visible ? View.VISIBLE : View.GONE)); runAction(() -> view.setVisibility(visible ? View.VISIBLE : View.GONE));
} }
public static void startApplication(String params, String mainLib) static void startApplication(String params, String mainLib)
{ {
synchronized (m_mainActivityMutex) { synchronized (m_mainActivityMutex) {
m_qtThread.run(() -> { m_qtThread.run(() -> {
@ -343,7 +344,7 @@ class QtNative
} }
} }
public static void quitApp() static void quitApp()
{ {
runAction(() -> { runAction(() -> {
quitQtAndroidPlugin(); quitQtAndroidPlugin();
@ -357,7 +358,7 @@ class QtNative
} }
@UsedFromNativeCode @UsedFromNativeCode
public static int checkSelfPermission(String permission) static int checkSelfPermission(String permission)
{ {
synchronized (m_mainActivityMutex) { synchronized (m_mainActivityMutex) {
Context context = getContext(); Context context = getContext();
@ -419,43 +420,43 @@ class QtNative
} }
// application methods // application methods
public static native boolean startQtAndroidPlugin(String params); static native boolean startQtAndroidPlugin(String params);
public static native void startQtApplication(); static native void startQtApplication();
public static native void waitForServiceSetup(); static native void waitForServiceSetup();
public static native void quitQtCoreApplication(); static native void quitQtCoreApplication();
public static native void quitQtAndroidPlugin(); static native void quitQtAndroidPlugin();
public static native void terminateQt(); static native void terminateQt();
public static native boolean updateNativeActivity(); static native boolean updateNativeActivity();
// application methods // application methods
// window methods // window methods
public static native void updateWindow(); static native void updateWindow();
// window methods // window methods
// application methods // application methods
public static native void updateApplicationState(int state); static native void updateApplicationState(int state);
// menu methods // menu methods
public static native boolean onPrepareOptionsMenu(Menu menu); static native boolean onPrepareOptionsMenu(Menu menu);
public static native boolean onOptionsItemSelected(int itemId, boolean checked); static native boolean onOptionsItemSelected(int itemId, boolean checked);
public static native void onOptionsMenuClosed(Menu menu); static native void onOptionsMenuClosed(Menu menu);
public static native void onCreateContextMenu(ContextMenu menu); static native void onCreateContextMenu(ContextMenu menu);
public static native void fillContextMenu(Menu menu); static native void fillContextMenu(Menu menu);
public static native boolean onContextItemSelected(int itemId, boolean checked); static native boolean onContextItemSelected(int itemId, boolean checked);
public static native void onContextMenuClosed(Menu menu); static native void onContextMenuClosed(Menu menu);
// menu methods // menu methods
// activity methods // activity methods
public static native void onActivityResult(int requestCode, int resultCode, Intent data); static native void onActivityResult(int requestCode, int resultCode, Intent data);
public static native void onNewIntent(Intent data); public static native void onNewIntent(Intent data);
public static native void runPendingCppRunnables(); static native void runPendingCppRunnables();
public static native void sendRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults); static native void sendRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults);
// activity methods // activity methods
// service methods // service methods
public static native IBinder onBind(Intent intent); static native IBinder onBind(Intent intent);
// service methods // service methods
} }