File indexing completed on 2024-05-12 05:04:07

0001 // SPDX-FileCopyrightText: 2023 Joshua Goins <josh@redstrate.com>
0002 // SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0003 
0004 package org.kde.tokodon;
0005 
0006 import android.content.ContentResolver;
0007 import android.content.Intent;
0008 import android.util.Log;
0009 import android.os.Bundle;
0010 import android.os.ParcelFileDescriptor;
0011 import android.net.Uri;
0012 import android.app.Activity;
0013 
0014 import java.io.FileNotFoundException;
0015 
0016 import org.qtproject.qt.android.bindings.QtActivity;
0017 
0018 class AndroidUtils
0019 {
0020     public static native void openUri(String uri);
0021 }
0022 
0023 public class OpenUriActivity extends QtActivity
0024 {
0025     private static boolean isIntentPending;
0026     private static boolean isInitialized;
0027     private static String storedIntentUri;
0028 
0029     private void processIntent() {
0030         Intent intent = getIntent();
0031         if ("android.intent.action.VIEW".equals(intent.getAction()) ||
0032             "android.intent.action.EDIT".equals(intent.getAction())) {
0033             Uri intentUri = intent.getData();
0034             if (intentUri != null) {
0035                 storedIntentUri = intentUri.toString();
0036             }
0037         }
0038     }
0039 
0040     public static void checkPendingIntents() {
0041         isInitialized = true;
0042         if (isIntentPending) {
0043             isIntentPending = false;
0044             sendIntent();
0045         }
0046     }
0047 
0048     public static void sendIntent() {
0049         AndroidUtils.openUri(storedIntentUri.toString());
0050     }
0051 
0052     @Override
0053     public void onCreate(Bundle savedInstanceState) {
0054         super.onCreate(savedInstanceState);
0055         Intent intent = getIntent();
0056         if (intent != null) {
0057             String action = intent.getAction();
0058             if (action != null) {
0059                 isIntentPending = true;
0060                 processIntent();
0061             }
0062         }
0063     }
0064 
0065     @Override
0066     public void onNewIntent(Intent intent) {
0067         super.onNewIntent(intent);
0068         setIntent(intent);
0069         if (isInitialized) {
0070             sendIntent();
0071         } else {
0072             processIntent();
0073             isIntentPending = true;
0074         }
0075     }
0076 }