使用Intent打开系统应用程序

时间:2012-06-29 19:47:11

标签: android android-intent system implicit

我正在尝试制作一个简单的应用程序,当用户从主屏幕或应用程序抽屉中点击时,该应用程序将用户发送到特定的(系统安装的)应用程序(系统设置,日历,浏览器等)。

例如,我正在尝试在启动应用程序时打开系统设置,就像设置的快捷方式一样。

有可能以我想要的方式实现吗?有没有人有什么建议?

这是我的代码:

import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;


public class MainActivity extends Activity {

    public void  LaunchComponent (String packageName, String name){
        Intent i = new Intent(Intent.ACTION_MAIN);
        PackageManager manager = getPackageManager();
        i = manager.getLaunchIntentForPackage("com.sec.android.app.controlpanel");
        i.addCategory(Intent.CATEGORY_LAUNCHER);
        startActivity(i);

    }
}

我目前在我的应用中没有布局文件,例如main.xml,因为它没有任何UI或布局元素。它应该做的就是将用户发送到另一个应用程序活动。我一直在使用这个教程(缺少链接),我已经实现了所有代码示例,我无法弄清楚,我是Android开发新手,java不是我最好的语言。对任何批评或建议开放。

2 个答案:

答案 0 :(得分:3)

你必须调用LaunchComponent,这可以在onCreate第一个生命周期回调函数中完成

public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
     LaunchComponent (packageName, name);
}

已更新

import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;


public class MainActivity extends Activity {

public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
         LaunchComponent ("com.sec.android.app.controlpanel", "abc?");
    }


public void  LaunchComponent (String packageName, String name){
    Intent i = new Intent(Intent.ACTION_MAIN);
    PackageManager manager = getPackageManager();
    i = manager.getLaunchIntentForPackage(packageName);
    i.addCategory(Intent.CATEGORY_LAUNCHER);
    startActivity(i);

}

答案 1 :(得分:1)

在此示例中,您可以打开系统闹钟应用程序,希望它有所帮助,示例活动:

public class TestActivity extends Activity {

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

        PackageManager packageManager = this.getPackageManager();
        if (packageManager != null) {

            Intent AlarmClockIntent = 
                new Intent(Intent.ACTION_MAIN).addCategory(
                        Intent.CATEGORY_LAUNCHER).setComponent(
                                new ComponentName("com.android.deskclock", "com.android.deskclock.DeskClock"));

            ResolveInfo resolved = packageManager.resolveActivity(AlarmClockIntent, PackageManager.MATCH_DEFAULT_ONLY);
            if (resolved != null) {
                startActivity(AlarmClockIntent);
                finish();
                return;
            } else {
                // required activity can not be located!
            }
        }
    }
}