pull/677/merge
Mahyar Mirrashed 2 months ago committed by GitHub
commit 9c8e11090e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -55,6 +55,10 @@
<intent-filter>
<action android:name="android.service.quicksettings.action.QS_TILE_PREFERENCES" />
</intent-filter>
<meta-data
android:name="android.app.shortcuts"
android:resource="@xml/shortcuts" />
</activity>
<activity
android:name="ShareActivity"
@ -89,6 +93,14 @@
<data android:mimeType="video/*" />
</intent-filter>
</activity>
<activity
android:name=".EnableVpnShortcutActivity"
android:exported="true"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<activity
android:name=".DisableVpnShortcutActivity"
android:exported="true"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<receiver
android:name="IPNReceiver"

@ -0,0 +1,27 @@
// Copyright (c) Tailscale Inc & AUTHORS
// SPDX-License-Identifier: BSD-3-Clause
package com.tailscale.ipn;
import android.content.Intent;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
/**
* Activity to disable the Tailscale VPN via app shortcut.
* Sends a broadcast to IPNReceiver and finishes immediately.
*/
public class DisableVpnShortcutActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent broadcastIntent = new Intent(IPNReceiver.INTENT_DISCONNECT_VPN);
broadcastIntent.setClass(this, IPNReceiver.class);
sendBroadcast(broadcastIntent);
finish(); // Close the activity immediately
}
}

@ -0,0 +1,27 @@
// Copyright (c) Tailscale Inc & AUTHORS
// SPDX-License-Identifier: BSD-3-Clause
package com.tailscale.ipn;
import android.content.Intent;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
/**
* Activity to enable the Tailscale VPN via app shortcut.
* Sends a broadcast to IPNReceiver and finishes immediately.
*/
public class EnableVpnShortcutActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent broadcastIntent = new Intent(IPNReceiver.INTENT_CONNECT_VPN);
broadcastIntent.setClass(this, IPNReceiver.class);
sendBroadcast(broadcastIntent);
finish(); // Close the activity immediately
}
}

@ -360,4 +360,10 @@
<string name="taildrop_directory_picker_info">What is taildrop?</string>
<string name="taildrop_directory_picker_button">Open Directory Picker</string>
<!-- Strings for shortcuts -->
<string name="shortcut_enable_vpn_short">Enable VPN</string>
<string name="shortcut_enable_vpn_long">Enable Tailscale VPN</string>
<string name="shortcut_disable_vpn_short">Disable VPN</string>
<string name="shortcut_disable_vpn_long">Disable Tailscale VPN</string>
</resources>

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<shortcuts xmlns:android="http://schemas.android.com/apk/res/android">
<shortcut
android:shortcutId="enable_vpn"
android:enabled="true"
android:icon="@mipmap/ic_launcher"
android:shortcutShortLabel="@string/shortcut_enable_vpn_short"
android:shortcutLongLabel="@string/shortcut_enable_vpn_long">
<intent
android:action="android.intent.action.VIEW"
android:targetPackage="com.tailscale.ipn"
android:targetClass="com.tailscale.ipn.EnableVpnShortcutActivity" />
</shortcut>
<shortcut
android:shortcutId="disable_vpn"
android:enabled="true"
android:icon="@mipmap/ic_launcher"
android:shortcutShortLabel="@string/shortcut_disable_vpn_short"
android:shortcutLongLabel="@string/shortcut_disable_vpn_long">
<intent
android:action="android.intent.action.VIEW"
android:targetPackage="com.tailscale.ipn"
android:targetClass="com.tailscale.ipn.DisableVpnShortcutActivity" />
</shortcut>
</shortcuts>
Loading…
Cancel
Save