No don't do that, the am command is not part of the SDK, and doing it this way is horrible inefficient (you need to spin up and initialize a fresh Dalvik vm for the am command, which takes a second or more), and usually totally broken because you are not launching the activity from your own context for the system to correctly associate the call with you.
And on top of that, your example here uses an explicit component name of the browser activity, which is *completely* an implementation detail: it is likely to be different across different devices, it is *definitely* different on devices that ship with Chrome as the default browser, etc. This is totally wrong. The right thing to do is follow the SDK and do it the right way, the way it is documented. If you need to write a little bit of JNI code (and it *is* a little bit, just a method call into your own Java method that uses the SDK), then that is what you do. On Fri, Jul 6, 2012 at 11:58 PM, Sandeep Kumar <[email protected]>wrote: > try below:- > > ret = execl("/system/bin/sh", "sh", "-c", "am start -a > android.intent.action.MAIN -n com.android.browser/.BrowserActivity", (char > *)NULL); > > > > On Saturday, July 7, 2012 3:51:58 AM UTC+9, HV wrote: >> >> Wanted to know what is the best practice to launch apps from native >> code? Is using 'am' forbidden? It has to be via the system call though, >> like system("am start ..."); Will 'am' support be discontinued going >> forward? >> >> Is there any alternative method? >> >> Thanks much >> HV >> > -- > unsubscribe: [email protected] > website: http://groups.google.com/group/android-porting > -- Dianne Hackborn Android framework engineer [email protected] Note: please don't send private questions to me, as I don't have time to provide private support, and so won't reply to such e-mails. All such questions should be posted on public forums, where I and others can see and answer them. -- unsubscribe: [email protected] website: http://groups.google.com/group/android-porting
