如何在Android应用程序中启动Android应用程序?

12

我的应用程序中有选项卡布局和两个标签。

  • 标签1 - 我的应用程序 在此输入图片描述
  • 标签2 - 任何外部Android应用程序(如联系人、呼叫拨号等)(我知道如何启动外部应用程序,但它不会在我的应用程序中运行(意味着在启动后选项卡不会显示))。

提前感谢。


阅读有关Intent类的内容,了解其操作方式,这样你就能解决问题了。我们不会直接给出答案。理解Android Intent系统的工作原理,然后一切都会变得轻而易举。 - JoxTraex
5
@JoxTraex 他询问的是否可能?那我需要再次阅读意图。 - ingsaurabh
这可能吗?我怀疑。你可以从你的应用程序中运行其他应用程序,但是在第一个应用程序生成的视图内运行它吗? - Sunny Kumar Aditya
3个回答

12
我可能误解了这个问题,但是除非您已经创建了显式的意图(与其他应用程序开发人员合作或创建了您希望嵌入的其他应用程序),否则这将不可能。
每个Android应用程序都在沙盒中运行:http://developer.android.com/guide/topics/security/security.html 特别是:
因为Android将应用程序从彼此隔离开来,所以应用程序必须明确共享资源和数据。他们通过声明他们需要的权限来做到这一点,这些权限不是基本沙箱提供的能力。应用程序静态地声明它们需要的权限,Android系统在安装应用程序时提示用户同意。Android没有动态授予权限的机制(在运行时),因为它会损害安全而使用户体验复杂化。
因此,这是不可能的。这似乎是错误或恶意的开始,但我认为您应该认真重新考虑您的方法,并重新思考权衡利弊的好处,以及实现您的要求的可能性的不太可能性。

1

在我看来,这是不可能的。

你只能在 TabHost 中显示自己的活动。对于外部活动,你需要一个隐式意图,但是 TabHost 不支持此功能:将外部 Intent 嵌入主 Activity

因此,你需要在自己的活动中显示来自其他应用程序的数据。为此,你需要查询其他应用程序提供的内容提供程序(请参见 http://developer.android.com/guide/topics/providers/content-providers.html),并在列表活动中包含此 ListActivity(请参见 http://developer.android.com/reference/android/app/ListActivity.html)并将其包含在你的 TabHost 中。


1

阅读文档(意图部分),以下是一些例子:

public class MyTab extends TabActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        final TabHost tabHost = getTabHost();

        Intent taskIntent = new Intent(this, Public.class);
        taskIntent.putExtra(Intent.ACTION_VIEW, "public");

        TabHost.TabSpec tsValid = tabHost.newTabSpec("public");
        tsValid.setIndicator(getText(R.string.tab_title_public));
        tsValid.setContent(taskIntent);

        tabHost.addTab(tsValid);

        Intent annIntent = new Intent(this, Private.class);
        annIntent.putExtra(Intent.ACTION_VIEW, "private");

        TabHost.TabSpec tsGenerate = tabHost.newTabSpec("private");
        tsGenerate.setIndicator(getText(R.string.tab_title_private));
        tsGenerate.setContent(annIntent);

        tabHost.addTab(tsGenerate);
    }

}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接