2
0
mirror of https://github.com/KDE/kdeconnect-android synced 2025-08-22 09:58:08 +00:00

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.
This commit is contained in:
Bacteria Dev 2023-03-04 12:34:59 +00:00 committed by Albert Vaca Cintora
parent 938985beff
commit 118d8784fa
14 changed files with 31 additions and 15 deletions

View File

@ -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;
}

View File

@ -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

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -304,7 +304,7 @@ public class DeviceFragment extends Fragment {
//Plugins button list
final Collection<Plugin> 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)));