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 }