【问题标题】:Launch an activity of an application from a different application on Android从 Android 上的其他应用程序启动应用程序的活动
【发布时间】:2016-06-22 21:40:51
【问题描述】:

我需要从我创建的应用程序中启动应用程序的活动(不是主要活动)。我要启动的活动是专有的,因此,我不能对其代码(或清单)进行任何更改。

例如:我想从我自己的应用程序中启动某人的 Facebook 个人资料。从我的应用程序到 facebook 的正常意图会打开“新闻源”(我不想要)。我想知道如何访问任何其他活动。 提前致谢!

我的小代码:

String PACKAGE="com.facebook.katana";
Intent launchIntent = getPackageManager()
                    .getLaunchIntentForPackage(PACKAGE);
startActivity(launchIntent);

【问题讨论】:

  • “我想知道如何访问任何其他活动”——您询问其他应用程序的开发人员,“在您的应用程序中使用什么正确的Intent 结构来启动此活动?而且,您是否打算长期支持Intent?"。

标签: android android-intent android-activity android-service android-package-managers


【解决方案1】:

要启动特定活动,您需要使用明确的意图。或者,如果您知道该 Activity 响应什么操作,则将隐式 Intent 与操作一起使用。

要使用显式意图,您可以执行以下操作(前提是您从活动中调用它):

        Intent intent = new Intent();
        intent.setComponent(new ComponentName("com.package.name", "com.package.name.ActivityName"));
        if(getPackageManager().resolveActivity(intent, 0) != null) {
            startActivity(intent);
        } else {
            Toast.makeText(this, "No app installed that can perform this action", Toast.LENGTH_SHORT).show();
        }

您还可以向意图添加标志、添加操作和类别。只要 PackageManager 可以将 Intent 解析为可行 Intent,它就会启动 Activity。

现在...

关于 facebook 个人资料的问题是另一回事。

也许,实现这一目标的最佳方法是将意图与操作 VIEW 一起使用,并将 Intent.setData 与 uri 提供给个人资料页面。还应检查是否有可能正确解决。然后将启动所有支持的活动的选择器以打开它,其中应包括 facebook 应用程序。然后由用户使用 Facebook 应用程序或启动器打开意图。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-06
    • 1970-01-01
    • 2016-12-09
    • 2012-06-22
    相关资源
    最近更新 更多