From 118d8784fa4b1e5fdae7cf528039222dc5e50c69 Mon Sep 17 00:00:00 2001 From: Bacteria Dev Date: Sat, 4 Mar 2023 12:34:59 +0000 Subject: [PATCH] Hide 'Send Clipboard' from DeviceFragment when READ_LOGS permission is granted On Android 10 and above, Clipboard needs to be manually sent. Recently the app was shipped with the patches so that users can use adb to grant the required permissions for automatic clipboard propagation. In case the permissions were granted for automatic clipboard propagation, 'Send Clipboard' option was hidden from persistent notification but was not removed from the DeviceFragment. This MR addresses this. --- .../Plugins/BigscreenPlugin/BigscreenPlugin.java | 3 ++- .../Plugins/ClibpoardPlugin/ClipboardPlugin.java | 8 ++++++-- .../FindRemoteDevicePlugin/FindRemoteDevicePlugin.java | 3 ++- .../kdeconnect/Plugins/MousePadPlugin/MousePadPlugin.java | 3 ++- .../kde/kdeconnect/Plugins/MprisPlugin/MprisPlugin.java | 3 ++- .../kde/kdeconnect/Plugins/PhotoPlugin/PhotoPlugin.java | 3 ++- src/org/kde/kdeconnect/Plugins/PingPlugin/PingPlugin.java | 3 ++- src/org/kde/kdeconnect/Plugins/Plugin.java | 3 ++- .../Plugins/PresenterPlugin/PresenterPlugin.java | 3 ++- .../RemoteKeyboardPlugin/RemoteKeyboardPlugin.java | 3 ++- .../Plugins/RunCommandPlugin/RunCommandPlugin.java | 3 ++- .../kde/kdeconnect/Plugins/SharePlugin/SharePlugin.java | 3 ++- .../Plugins/SystemVolumePlugin/SystemVolumePlugin.java | 3 ++- src/org/kde/kdeconnect/UserInterface/DeviceFragment.java | 2 +- 14 files changed, 31 insertions(+), 15 deletions(-) diff --git a/src/org/kde/kdeconnect/Plugins/BigscreenPlugin/BigscreenPlugin.java b/src/org/kde/kdeconnect/Plugins/BigscreenPlugin/BigscreenPlugin.java index 52007ac1..75517713 100644 --- a/src/org/kde/kdeconnect/Plugins/BigscreenPlugin/BigscreenPlugin.java +++ b/src/org/kde/kdeconnect/Plugins/BigscreenPlugin/BigscreenPlugin.java @@ -10,6 +10,7 @@ package org.kde.kdeconnect.Plugins.BigscreenPlugin; import android.Manifest; import android.app.Activity; +import android.content.Context; import android.content.Intent; import android.graphics.drawable.Drawable; import android.view.KeyEvent; @@ -67,7 +68,7 @@ public class BigscreenPlugin extends Plugin { } @Override - public boolean hasMainActivity() { + public boolean hasMainActivity(Context context) { return true; } diff --git a/src/org/kde/kdeconnect/Plugins/ClibpoardPlugin/ClipboardPlugin.java b/src/org/kde/kdeconnect/Plugins/ClibpoardPlugin/ClipboardPlugin.java index 14c8fdc1..38af6c57 100644 --- a/src/org/kde/kdeconnect/Plugins/ClibpoardPlugin/ClipboardPlugin.java +++ b/src/org/kde/kdeconnect/Plugins/ClibpoardPlugin/ClipboardPlugin.java @@ -8,9 +8,12 @@ package org.kde.kdeconnect.Plugins.ClibpoardPlugin; +import android.Manifest; import android.app.Activity; import android.content.ClipData; import android.content.ClipboardManager; +import android.content.Context; +import android.content.pm.PackageManager; import android.graphics.drawable.Drawable; import android.os.Build; import android.widget.Toast; @@ -126,8 +129,9 @@ public class ClipboardPlugin extends Plugin { } @Override - public boolean hasMainActivity() { - return Build.VERSION.SDK_INT > Build.VERSION_CODES.P; + public boolean hasMainActivity(Context context) { + return Build.VERSION.SDK_INT > Build.VERSION_CODES.P && + ContextCompat.checkSelfPermission(context, Manifest.permission.READ_LOGS) == PackageManager.PERMISSION_DENIED; } @Override diff --git a/src/org/kde/kdeconnect/Plugins/FindRemoteDevicePlugin/FindRemoteDevicePlugin.java b/src/org/kde/kdeconnect/Plugins/FindRemoteDevicePlugin/FindRemoteDevicePlugin.java index fd85e018..5c96e164 100644 --- a/src/org/kde/kdeconnect/Plugins/FindRemoteDevicePlugin/FindRemoteDevicePlugin.java +++ b/src/org/kde/kdeconnect/Plugins/FindRemoteDevicePlugin/FindRemoteDevicePlugin.java @@ -7,6 +7,7 @@ package org.kde.kdeconnect.Plugins.FindRemoteDevicePlugin; import android.app.Activity; +import android.content.Context; import org.apache.commons.lang3.ArrayUtils; import org.kde.kdeconnect.NetworkPacket; @@ -46,7 +47,7 @@ public class FindRemoteDevicePlugin extends Plugin { } @Override - public boolean hasMainActivity() { + public boolean hasMainActivity(Context context) { return true; } diff --git a/src/org/kde/kdeconnect/Plugins/MousePadPlugin/MousePadPlugin.java b/src/org/kde/kdeconnect/Plugins/MousePadPlugin/MousePadPlugin.java index cb8380f3..1c386a3f 100644 --- a/src/org/kde/kdeconnect/Plugins/MousePadPlugin/MousePadPlugin.java +++ b/src/org/kde/kdeconnect/Plugins/MousePadPlugin/MousePadPlugin.java @@ -7,6 +7,7 @@ package org.kde.kdeconnect.Plugins.MousePadPlugin; import android.app.Activity; +import android.content.Context; import android.content.Intent; import android.graphics.drawable.Drawable; @@ -61,7 +62,7 @@ public class MousePadPlugin extends Plugin { } @Override - public boolean hasMainActivity() { + public boolean hasMainActivity(Context context) { return true; } diff --git a/src/org/kde/kdeconnect/Plugins/MprisPlugin/MprisPlugin.java b/src/org/kde/kdeconnect/Plugins/MprisPlugin/MprisPlugin.java index 060658af..aa5db56e 100644 --- a/src/org/kde/kdeconnect/Plugins/MprisPlugin/MprisPlugin.java +++ b/src/org/kde/kdeconnect/Plugins/MprisPlugin/MprisPlugin.java @@ -7,6 +7,7 @@ package org.kde.kdeconnect.Plugins.MprisPlugin; import android.app.Activity; +import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.drawable.Drawable; @@ -479,7 +480,7 @@ public class MprisPlugin extends Plugin { } @Override - public boolean hasMainActivity() { + public boolean hasMainActivity(Context context) { return true; } diff --git a/src/org/kde/kdeconnect/Plugins/PhotoPlugin/PhotoPlugin.java b/src/org/kde/kdeconnect/Plugins/PhotoPlugin/PhotoPlugin.java index c025ca41..6e2f4029 100644 --- a/src/org/kde/kdeconnect/Plugins/PhotoPlugin/PhotoPlugin.java +++ b/src/org/kde/kdeconnect/Plugins/PhotoPlugin/PhotoPlugin.java @@ -6,6 +6,7 @@ package org.kde.kdeconnect.Plugins.PhotoPlugin; +import android.content.Context; import android.content.Intent; import android.graphics.drawable.Drawable; import android.net.Uri; @@ -51,7 +52,7 @@ public class PhotoPlugin extends Plugin { } @Override - public boolean hasMainActivity() { + public boolean hasMainActivity(Context context) { return false; } diff --git a/src/org/kde/kdeconnect/Plugins/PingPlugin/PingPlugin.java b/src/org/kde/kdeconnect/Plugins/PingPlugin/PingPlugin.java index b56316fd..909aeb10 100644 --- a/src/org/kde/kdeconnect/Plugins/PingPlugin/PingPlugin.java +++ b/src/org/kde/kdeconnect/Plugins/PingPlugin/PingPlugin.java @@ -10,6 +10,7 @@ import android.app.Activity; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; +import android.content.Context; import android.content.Intent; import android.util.Log; @@ -97,7 +98,7 @@ public class PingPlugin extends Plugin { } @Override - public boolean hasMainActivity() { + public boolean hasMainActivity(Context context) { return true; } diff --git a/src/org/kde/kdeconnect/Plugins/Plugin.java b/src/org/kde/kdeconnect/Plugins/Plugin.java index 09b01c59..f700da7c 100644 --- a/src/org/kde/kdeconnect/Plugins/Plugin.java +++ b/src/org/kde/kdeconnect/Plugins/Plugin.java @@ -6,6 +6,7 @@ package org.kde.kdeconnect.Plugins; +import android.Manifest; import android.app.Activity; import android.content.Context; import android.content.SharedPreferences; @@ -173,7 +174,7 @@ public abstract class Plugin { /** * Return true if the plugin should display something in the Device main view */ - public boolean hasMainActivity() { + public boolean hasMainActivity(Context context) { return false; } diff --git a/src/org/kde/kdeconnect/Plugins/PresenterPlugin/PresenterPlugin.java b/src/org/kde/kdeconnect/Plugins/PresenterPlugin/PresenterPlugin.java index ff5316c1..15dbd32c 100644 --- a/src/org/kde/kdeconnect/Plugins/PresenterPlugin/PresenterPlugin.java +++ b/src/org/kde/kdeconnect/Plugins/PresenterPlugin/PresenterPlugin.java @@ -8,6 +8,7 @@ package org.kde.kdeconnect.Plugins.PresenterPlugin; import android.app.Activity; +import android.content.Context; import android.content.Intent; import android.graphics.drawable.Drawable; import android.view.KeyEvent; @@ -53,7 +54,7 @@ public class PresenterPlugin extends Plugin { } @Override - public boolean hasMainActivity() { + public boolean hasMainActivity(Context context) { return true; } diff --git a/src/org/kde/kdeconnect/Plugins/RemoteKeyboardPlugin/RemoteKeyboardPlugin.java b/src/org/kde/kdeconnect/Plugins/RemoteKeyboardPlugin/RemoteKeyboardPlugin.java index f9f97106..2b7654ba 100644 --- a/src/org/kde/kdeconnect/Plugins/RemoteKeyboardPlugin/RemoteKeyboardPlugin.java +++ b/src/org/kde/kdeconnect/Plugins/RemoteKeyboardPlugin/RemoteKeyboardPlugin.java @@ -7,6 +7,7 @@ package org.kde.kdeconnect.Plugins.RemoteKeyboardPlugin; import android.app.Activity; +import android.content.Context; import android.content.SharedPreferences; import android.graphics.drawable.Drawable; import android.os.SystemClock; @@ -167,7 +168,7 @@ public class RemoteKeyboardPlugin extends Plugin implements SharedPreferences.On } @Override - public boolean hasMainActivity() { + public boolean hasMainActivity(Context context) { return false; } diff --git a/src/org/kde/kdeconnect/Plugins/RunCommandPlugin/RunCommandPlugin.java b/src/org/kde/kdeconnect/Plugins/RunCommandPlugin/RunCommandPlugin.java index d763dec2..721762ea 100644 --- a/src/org/kde/kdeconnect/Plugins/RunCommandPlugin/RunCommandPlugin.java +++ b/src/org/kde/kdeconnect/Plugins/RunCommandPlugin/RunCommandPlugin.java @@ -8,6 +8,7 @@ package org.kde.kdeconnect.Plugins.RunCommandPlugin; import android.app.Activity; +import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.graphics.drawable.Drawable; @@ -171,7 +172,7 @@ public class RunCommandPlugin extends Plugin { } @Override - public boolean hasMainActivity() { + public boolean hasMainActivity(Context context) { return true; } diff --git a/src/org/kde/kdeconnect/Plugins/SharePlugin/SharePlugin.java b/src/org/kde/kdeconnect/Plugins/SharePlugin/SharePlugin.java index b30419fa..3c59a1bf 100644 --- a/src/org/kde/kdeconnect/Plugins/SharePlugin/SharePlugin.java +++ b/src/org/kde/kdeconnect/Plugins/SharePlugin/SharePlugin.java @@ -9,6 +9,7 @@ package org.kde.kdeconnect.Plugins.SharePlugin; import android.Manifest; import android.app.Activity; import android.content.ClipboardManager; +import android.content.Context; import android.content.Intent; import android.graphics.drawable.Drawable; import android.net.Uri; @@ -90,7 +91,7 @@ public class SharePlugin extends Plugin { } @Override - public boolean hasMainActivity() { + public boolean hasMainActivity(Context context) { return true; } diff --git a/src/org/kde/kdeconnect/Plugins/SystemVolumePlugin/SystemVolumePlugin.java b/src/org/kde/kdeconnect/Plugins/SystemVolumePlugin/SystemVolumePlugin.java index 531c8daf..6520e62b 100644 --- a/src/org/kde/kdeconnect/Plugins/SystemVolumePlugin/SystemVolumePlugin.java +++ b/src/org/kde/kdeconnect/Plugins/SystemVolumePlugin/SystemVolumePlugin.java @@ -6,6 +6,7 @@ package org.kde.kdeconnect.Plugins.SystemVolumePlugin; +import android.content.Context; import android.util.Log; import org.json.JSONArray; @@ -115,7 +116,7 @@ public class SystemVolumePlugin extends Plugin { } @Override - public boolean hasMainActivity() { + public boolean hasMainActivity(Context context) { return false; } diff --git a/src/org/kde/kdeconnect/UserInterface/DeviceFragment.java b/src/org/kde/kdeconnect/UserInterface/DeviceFragment.java index 3f61d772..3d454fa2 100644 --- a/src/org/kde/kdeconnect/UserInterface/DeviceFragment.java +++ b/src/org/kde/kdeconnect/UserInterface/DeviceFragment.java @@ -304,7 +304,7 @@ public class DeviceFragment extends Fragment { //Plugins button list final Collection plugins = device.getLoadedPlugins().values(); for (final Plugin p : plugins) { - if (!p.hasMainActivity()) continue; + if (!p.hasMainActivity(getContext())) continue; if (p.displayInContextMenu()) continue; pluginListItems.add(new PluginItem(p, v -> p.startMainActivity(mActivity)));