Как запустить активность через am start из программы
Как запустить активность через am start из программы
Всем привет. Подскажите, как запустить активность, скажем, браузера, из программы через adb команду am start?
Re: Как запустить активность через am start из программы
Возможно, я неправильно выразился. Интересует, как запустить активность браузера из моей программы, а не через adb tools. Без использования intent, именно через вызов am start. (Телефон НЕ рутован)
Через вот такой метод запустить почему-то не получается (android 4.2.2)
Через вот такой метод запустить почему-то не получается (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 из программы
Для начала нужно выяснить пакет и имя активности встроенного браузера, у разных производителей он может быть свой.
К примеру у меня на 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]
К примеру у меня на 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 из программы
В вышеприведенном коде имя активности указано верно, но дело, собственно и не в этом. На андроиде 4.2.2 таким методом не запускаются НИКАКИЕ активности, а на андроиде 2.3.3 все работаеет отлично
Re: Как запустить активность через am start из программы
Я вообще подобное не пробывал, но подозреваю, что может помочь: am broadcast -a android.intent.action.xxx, где xxx - имя action задекларированное в манифесте.
