In general, we know that another app's package name and mainactivity name can be started directly from the following code:
Intent Intent = new Intent (intent.action_main);
Intent.addcategory (Intent.category_launcher);
ComponentName cn = New ComponentName (PackageName, className);
Intent.setcomponent (CN);
StartActivity (Intent);
But more often, we do not know the application Startup activity class name, but only know the package name, we can use the Resolveinfo class to get the class name of the startup acitivty
Here is the implementation code:
private void Openapp (String packagename) {
PackageInfo pi = Getpackagemanager (). Getpackageinfo (PackageName, 0);
Intent resolveintent = new Intent (intent.action_main, NULL);
Resolveintent.addcategory (Intent.category_launcher);
Resolveintent.setpackage (Pi.packagename);
List<resolveinfo> apps = pm.queryintentactivities (resolveintent, 0);
ResolveInfo ri = Apps.iterator (). Next ();
if (ri = null) {
String PackageName = ri.activityInfo.packageName;
String className = ri.activityInfo.name;
Intent Intent = new Intent (intent.action_main);
Intent.addcategory (Intent.category_launcher);
ComponentName cn = New ComponentName (PackageName, className);
Intent.setcomponent (CN);
StartActivity (Intent);
}
Android launches another program in one application programmer