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

时间:2011-12-23 06:35:47

标签: android android-activity

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

  • 标签1 - 我的应用enter image description here
  • 标签2 - 任何外部Android应用(如联系人,电话 拨号等。)(我知道如何启动外部应用程序,但它不是 在我的应用程序中运行(意味着选项卡不会显示在 发射))。

提前致谢

3 个答案:

答案 0 :(得分:12)

我可能误解了这一点,但除非您创建了明确的intents(与其他应用开发者合作或创建了您希望嵌入的其他应用),否则这是不可能的。

每个Android应用都在沙盒中运行:http://developer.android.com/guide/topics/security/security.html

特别是:

  

因为Android沙盒应用程序来自彼此,应用程序   必须明确共享资源和数据。他们通过声明来做到这一点   他们需要的权限,以提供其他功能   基本的沙箱。应用程序静态声明权限   他们需要,Android系统会提示用户同意   安装应用程序的时间。 Android没有机制   动态授予权限(在运行时),因为它复杂化   用户体验不利于安全。

因此,这是不可能的。这开始似乎是误导或恶意,但我会认真重新考虑你的方法,并重新考虑权衡利益甚至不可能实现你所要求的。

答案 1 :(得分:1)

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

您只能在TabHost内显示自己的活动。对于外部活动,您需要隐式意图,但TabHost不支持此操作:Embed external Intent in main Activity

因此,您可以在自己的活动中显示外部应用程序中的数据。执行此操作,您在列表活动中查询其他应用程序提供的内容提供程序(请参阅http://developer.android.com/guide/topics/providers/content-providers.html)(请参阅http://developer.android.com/reference/android/app/ListActivity.html上的完整示例)并在TabHost中包含此ListActivity。 / p>

答案 2 :(得分:0)

阅读doc(意图部分),一些例子:

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);
    }

}
相关问题