Студия Android: как подключиться к существующему VPN из настроек Android
Я новичок в Android и разрабатываю приложение, где я хочу подключиться к существующему VPN-соединению (уже настроенному в настройках Android) во время запуска.
До сих пор я смог открыть активность настроек через намерение:
Intent intent = new Intent(android.provider.Settings.ACTION_VPN_SETTINGS);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
Но я не хочу нажимать каждый раз, когда открываю приложение вручную для подключения.
Есть ли способ щелкнуть программно? Я думаю, что должен быть способ, потому что приложение "Automagic Premium" работает именно так, но я не знаю как.
Я нашел например:
View.performClick()
но как получить представление о начатых в настоящее время намерениях?
Или есть другой способ подключения?
Я также протестировал класс VpnService, но здесь кажется, что есть только возможность создавать новые профили и использовать собственную реализацию сервиса. Это не совсем то, что я ищу.
Я прочитал много сообщений, но не нашел удовлетворительного решения. Надеюсь, один из вас сможет мне помочь? Я счастлив с каждым намеком. Спасибо
1 ответ
Я нашел способ с помощью AccessibilityService выполнить щелчок кнопки в действии настроек. Я реализовал AccessibilityService-класс с методом onAccessibilityEvent, как это:
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
Log.i(TAG, "ACC::onAccessibilityEvent: " + event.getEventType());
if(AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED== event.getEventType()){
AccessibilityNodeInfo nodeInfo = event.getSource();
if (nodeInfo == null) {
return;
}
List<AccessibilityNodeInfo> list = nodeInfo.findAccessibilityNodeInfosByText("MyVPNConnection");
for (AccessibilityNodeInfo node : list) {
node.performAction(AccessibilityNodeInfo.ACTION_CLICK);
}
}
return;
}
К сожалению, AccessibilityNodeInfo "MyVPNConnection" не активируется. Итак, вызов node.performAction(AccessibilityNodeInfo.ACTION_CLICK);
возвращает ложь
Нажав на другие работы пользовательского интерфейса, как и ожидалось. Например, в той же настройке активности нажатие кнопки "Добавить VPN" прекрасно работает с кодом выше. Если у кого-то есть идея, пожалуйста, помогите мне. Это действительно расстраивает.
Обновить:
С помощью AccessibilityService я могу перейти к своему домашнему экрану и нажать на некоторые виджеты, например. Все виджеты, которые у меня есть на домашнем экране, активируются по клику, и открывается приложение, по которому щелкнули, кроме одного виджета (MYFritz!App 2), который должен подключаться к VPN. Это приводит меня к неудаче разрешения, но я не знаю, как это решить.