Страница 1 из 1
Как запустить активность через am start из программы
Добавлено: 12 июл 2014, 09:07
faceman
Всем привет. Подскажите, как запустить активность, скажем, браузера, из программы через adb команду am start?
Re: Как запустить активность через am start из программы
Добавлено: 12 июл 2014, 11:40
Viewer
Re: Как запустить активность через am start из программы
Добавлено: 12 июл 2014, 13:18
faceman
Возможно, я неправильно выразился. Интересует, как запустить активность браузера из моей программы, а не через adb tools. Без использования intent, именно через вызов am start. (Телефон НЕ рутован)
Через вот такой метод запустить почему-то не получается (android 4.2.2)
Код: Выделить всё
public void StartOtherActivity() {
try {
Runtime.getRuntime().exec("am start -n com.android.browser/.BrowserActivity");
} catch (IOException e) {
e.printStackTrace();
}
}
Re: Как запустить активность через am start из программы
Добавлено: 12 июл 2014, 14:15
Viewer
Для начала нужно выяснить пакет и имя активности встроенного браузера, у разных производителей он может быть свой.
К примеру у меня на Samsung:
com.sec.android.app.sbrowser
com.sec.android.app.sbrowser.SBrowserMainActivity
Чтобы найти имена активностей всех браузеров установленных на устройстве, можно попробовать запустить следующий код
[syntax=java] PackageManager packageManager = getPackageManager();
Intent intent = new Intent(Intent.ACTION_VIEW)
.setDataAndType(Uri.parse("http://"), "text/html");
List<ResolveInfo> list = packageManager.queryIntentActivities(intent, 0);
for (ResolveInfo resolveInfo : list) {
Log.d(TAG, resolveInfo.activityInfo.name);
}[/syntax]
Re: Как запустить активность через am start из программы
Добавлено: 12 июл 2014, 15:10
faceman
В вышеприведенном коде имя активности указано верно, но дело, собственно и не в этом. На андроиде 4.2.2 таким методом не запускаются НИКАКИЕ активности, а на андроиде 2.3.3 все работаеет отлично
Re: Как запустить активность через am start из программы
Добавлено: 12 июл 2014, 16:10
altwin
Я вообще подобное не пробывал, но подозреваю, что может помочь: am broadcast -a android.intent.action.xxx, где xxx - имя action задекларированное в манифесте.