【问题标题】:Calling install application activity from an other applications tabbed activity?从其他应用程序选项卡式活动中调用安装应用程序活动?
【发布时间】:2013-03-27 07:16:05
【问题描述】:

参考下面链接的答案。

Android : Call activity of another application

我试过firstTabSpec.setIndicator("Second Tab Name").setContent(new Intent("com.company.package.FOO"));

但我得到了一个

java.lang.SecurityException:请求来自 com.company.package(uid 10036)的代码在进程 com.example.test(uid 10037)中运行

其中 com.example.test 是调用已安装包“com.company.package.FOO”的包

com.company.package 清单

<activity
        android:name="com.company.package.Login"
        android:label="@string/app_name"
        android:windowSoftInputMode="adjustResize|stateVisible" >
        <intent-filter>
            <action android:name="com.company.package.FOO" />

            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

com.example.test 清单

 <activity
        android:name="com.example.test.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

如果您需要更多详细信息,请告诉我。

谢谢:)

【问题讨论】:

  • 您不能将来自其他应用的活动嵌入到您自己的应用中。
  • 他们已经在我发布的参考链接中完成了。我通过单击按钮尝试了它,但无法在 TabActivity 中实现它。
  • 这不是一回事。您可以使用Intent 从另一个应用程序开始新的Activity,但在您的情况下,使用setContent()Intent 实际上是在使用Intent 指向的活动构建该选项卡的内容。所以基本上启动的 Activity 将嵌入在 Android 中不允许的 TabActivity(你不应该首先使用它,因为它已被弃用)中(导致 SecurityException)。
  • 哦,好的。那么还有其他选择吗?
  • 嵌入一个活动,没有。所以你需要重新考虑你当前的逻辑。

标签: android android-intent tabs android-activity intentfilter


【解决方案1】:

出于安全原因,无法在您自己的应用中显示其他应用的活动,例如 iframe。

但是,您可以正常启动 Activity 并将控制权传递给它。

【讨论】:

    【解决方案2】:

    您可以发送意图消息来打开另一个应用程序活动,但您不能在您的选项卡中使用另一个应用程序的活动。充其量你可以做一件事。以某种方式检测您想要显示其他应用程序选项卡的选项卡何时切换,并从那里发送启动该应用程序的意图。通过这样做,您将无法在选项卡中显示该应用程序的活动,但您可以像其他活动一样启动该应用程序。为此,您可以执行以下任一操作

    选项 1:

    在选项卡 A 中说您要启动其他应用程序。在选项卡 A 中设置一个空白布局的活动。并在该活动的 onCreate 方法中启动另一个应用程序。但这里有一个问题。当其他应用程序完成时,将出现一个空白屏幕。在我的情况下,为了解决这个问题,我只是在关闭另一个应用程序时将选项卡切换到主(另一个)选项卡。

    选项 2:

    您可以使用TabHost.OnTabChangeListener 侦听器检测选项卡何时更改。然后你可以做同样的事情。

    选项 3:

    或者你可以通过检测标签按钮的点击来做同样的事情。

    无论如何,以上 3 个选项都只是同一选项的变体。虽然这不是一个好的解决方案,但我目前看不到任何更好的解决方案。希望它对你有用。谢谢

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多