Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Вставить слово в поле ввода другого приложения. Возможно ли такое? - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Живой поиск через один EditText в разных Listview ? http://www.cyberforum.ru/android-dev/thread1768093.html
есть EditText для поиска по спискам в ToolBar MainActivity. при вводе текста в MainActivity вызывается: @Override public void afterTextChanged(Editable cs) { String...
Программирование Android Прочитать данные из нужной БД Здравствуйте, у меня возник вопрос по поводу чтения данных из нужной БД. В моем приложении пользователь нажимает в ResyclerView на элемент и вызывается активность с подробной информацией об этом... http://www.cyberforum.ru/android-dev/thread1768036.html
Кликабельная область изображения Программирование Android
Привет! Проблема следующая: как сделать что-бы область картинки была ссылкой. При том что область произвольной, но заранее известной формы. По сути, приложение это карта региона и по клику на...
Получить ID вконтакте Программирование Android
Можно ли получить ID вконтакте без использования VK SDK?
Программирование Android Где в проекте Android Studio лучше добавлять элементы в БД SQL? http://www.cyberforum.ru/android-dev/thread1767734.html
Пишу приложение-викторину . У меня есть класс Db public class Db extends SQLiteOpenHelper { public static final String DATABASE_NAME = "questionsDb"; public static final int...
Программирование Android Как рисовать меню плитками Как сделать меню плитками (типа как у Windows Phone)? У плиток должна быть картинка и текст. Также отельный listener на нажатие для каждого. подробнее

Показать сообщение отдельно
AlexV1
-2 / 0 / 0
Регистрация: 05.04.2016
Сообщений: 33
23.06.2016, 15:59  [ТС]
> Думаю, что эмулировать щелчок на EditText средствами Андроида не удастся.

Считаем, что курсор в приложении X уже находится в поле ввода EditText и искать EditText не нужно.
Требуется только получить ссылку на activity приложения X, найти в этом activity тот View, на котором стоит курсор (getCurrentFocus()) и
попытаться (try...catch) вставить в него текст.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
public void btnPaste_Click(View view) {
 
    // Вставляем в чужое приложение, которое после моего в вершине стека Activities (1-й эл-т, т.к. мой 0-й)
 
    String top;
 
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { //For versions less than lollipop
 
        ActivityManager am = ((ActivityManager) getSystemService(ACTIVITY_SERVICE));
            List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(5);
            top = taskInfo.get(1).topActivity.getPackageName();
            Log.v("test", "top app = " + top);
 
            ActivityManager.RunningTaskInfo ar = taskInfo.get(1);
            String packageName = ar.topActivity.getPackageName();
            Context otherAppContext = null;
            try {
                otherAppContext = getApplicationContext().createPackageContext(
                        packageName, Context.CONTEXT_IGNORE_SECURITY);
            } catch(Exception ex) {
            }
 
            if (((Activity)otherAppContext).getCurrentFocus() != null) {
                View v = ((Activity)otherAppContext).getCurrentFocus();
                try {
                    //String st = v.getShortClassName();
                    ((EditText)v).setText("123");
        }
                catch(Exception ex) {
                    //return;
                }
            }
 
 
        }
    } else { 
    для LOLLIPOP и выше список активити из стека получать иначе ... 
    }
 }
Открыл браузер поставил курсор в поле ввода, затем мою программу и кликнул в ней по кнопке (btnPaste_Click)

Строка Log.v("test", "top app = " + top); показала "com.android.browser", что говорит о том, что все верно, добрался я до пакета предыдущего по стеку приложения.
Рушится на строке
if (((Activity)otherAppContext).getCurrentFocus() != null) {
Говоря о том, что не может преобразовать otherAppContext в Activity.

Как получить ссылку на Activity (не имя Activity, а именно ссылку на объект активити), зная его context?

Добавлено через 1 час 22 минуты
Вернее так,

Из taskInfo мы получили объект ComponentName и из него нужно получить ссылку на Activity.
Возможно ли это?
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru