为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

神不在的星期二 2019-06-06 15:13:51
从自己的角度打开另一个应用程序(意图)我知道如何更新自己的程序,也知道如何使用预定义的URI(例如SMS或电子邮件)打开程序。我需要知道如何创建一个打开MyT摩洛哥或任何其他我不知道他们听的是什么意图的应用程序的意图。我从DDMS获得了这个信息,但我并没有成功地将它转化为我可以使用的意图。这是从手动打开MyT架时开始的。谢谢你的帮忙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)
查看完整描述

3 回答

?
holdtom

TA贡献1805条经验 获得超10个赞

首先,Android中的“应用程序”概念是一个稍微扩展的概念。

一个应用程序-从技术上讲是一个进程-可以有多个活动、服务、内容提供者和/或广播侦听器。如果其中至少有一个正在运行,则应用程序已启动并正在运行(进程)。

因此,您需要识别的是如何“启动应用程序”。

好吧.。以下是你可以尝试的:

  1. 创建意图

    action=MAIN

    category=LAUNCHER

  2. 弄到

    PackageManager

    从当前上下文中使用

    context.getPackageManager

  3. packageManager.queryIntentActivity(<intent>, 0)

    在有意图的地方

    category=LAUNCHERaction=MAIN

    packageManager.resolveActivity(<intent>, 0)

    使用Main/Launcher获取第一个活动
  4. 弄到

    ActivityInfo

    你对此很感兴趣
  5. ActivityInfo

    ,去拿

    packageName

    name

  6. 最后,用以下方法创建另一个意图

    category=LAUNCHERaction=MAINcomponentName = new ComponentName(packageName, name)

    setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)

  7. 最后,

    context.startActivity(newIntent)


查看完整回答
反对 回复 2019-06-06
?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

我有这样的工作,

/** 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;
    }}

示例用法:

openApp(this, "com.google.android.maps.mytracks");

希望能帮上忙。


查看完整回答
反对 回复 2019-06-06
  • 3 回答
  • 0 关注
  • 572 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信