首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从您自己的应用程序打开另一个应用程序(意图)

从您自己的应用程序打开另一个应用程序(意图)
EN

Stack Overflow用户
提问于 2010-05-06 17:48:53
回答 15查看 247K关注 0票数 140

我知道如何更新我自己的程序,也知道如何使用预定义的Uri打开程序(例如sms或电子邮件)

我需要知道如何创建一个意图来打开MyTracks或任何其他我不知道他们监听的意图的应用程序。

我从DDMS得到了这个信息,但我还没有成功地将其转变为我可以使用的意图。这是在手动打开MyTracks时获取的。

谢谢你的帮忙

代码语言:javascript
复制
05-06 11:22:24.945: INFO/ActivityManager(76): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.google.android.maps.mytracks/com.google.android.apps.mytracks.MyTracks bnds=[243,338][317,417] }
05-06 11:22:25.005: INFO/ActivityManager(76): Start proc com.google.android.maps.mytracks for activity com.google.android.maps.mytracks/com.google.android.apps.mytracks.MyTracks: pid=1176 uid=10063 gids={3003, 1015}
05-06 11:22:26.995: INFO/ActivityManager(76): Displayed activity com.google.android.maps.mytracks/com.google.android.apps.mytracks.MyTracks: 1996 ms (total 1996 ms)
EN

回答 15

Stack Overflow用户

发布于 2011-09-29 18:37:46

我就是这样做的,

代码语言:javascript
复制
/** Open another app.
 * @param context current Context, like Activity, App, or Service
 * @param packageName the full package name of the app to open
 * @return true if likely successful, false if unsuccessful
 */
public static boolean openApp(Context context, String packageName) {
    PackageManager manager = context.getPackageManager();
    try {
        Intent i = manager.getLaunchIntentForPackage(packageName);
        if (i == null) {
            return false;
            //throw new ActivityNotFoundException();
        }
        i.addCategory(Intent.CATEGORY_LAUNCHER);
        context.startActivity(i);
        return true;
    } catch (ActivityNotFoundException e) {
        return false;
    }
}

示例用法:

代码语言:javascript
复制
openApp(this, "com.google.android.maps.mytracks");

希望这能帮助到别人。

票数 243
EN

Stack Overflow用户

发布于 2012-01-21 00:05:12

如果你已经有了你想要激活的包名,你可以使用下面的代码,它更通用一些:

代码语言:javascript
复制
PackageManager pm = context.getPackageManager();
Intent appStartIntent = pm.getLaunchIntentForPackage(appPackageName);
if (null != appStartIntent)
{
    context.startActivity(appStartIntent);
}

我发现,在常规的启动主活动的方法找不到主活动的情况下,它工作得更好。

票数 39
EN

Stack Overflow用户

发布于 2011-10-25 17:18:43

这是我基于MasterGaurav解决方案的解决方案的代码:

代码语言:javascript
复制
private void  launchComponent(String packageName, String name){
    Intent launch_intent = new Intent("android.intent.action.MAIN");
    launch_intent.addCategory("android.intent.category.LAUNCHER");
    launch_intent.setComponent(new ComponentName(packageName, name));
    launch_intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

    activity.startActivity(launch_intent);
}

public void startApplication(String application_name){
    try{
        Intent intent = new Intent("android.intent.action.MAIN");
        intent.addCategory("android.intent.category.LAUNCHER");

        intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
        List<ResolveInfo> resolveinfo_list = activity.getPackageManager().queryIntentActivities(intent, 0);

        for(ResolveInfo info:resolveinfo_list){
            if(info.activityInfo.packageName.equalsIgnoreCase(application_name)){
                launchComponent(info.activityInfo.packageName, info.activityInfo.name);
                break;
            }
        }
    }
    catch (ActivityNotFoundException e) {
        Toast.makeText(activity.getApplicationContext(), "There was a problem loading the application: "+application_name,Toast.LENGTH_SHORT).show();
    }
}
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2780102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档