2

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

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

是否可以按照我想要的方式实现它?有没有人有什么建议?

这是我的代码:

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 不是我最好的语言。接受任何批评或建议。

4

2 回答 2

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

}
于 2012-06-29T19:54:33.243 回答
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!
            }
        }
    }
}
于 2012-06-29T20:04:36.950 回答