Android 使用Intent打开系统应用程序

Android 使用Intent打开系统应用程序,android,android-intent,system,implicit,Android,Android Intent,System,Implicit,我正在尝试制作一个简单的应用程序,当用户从主屏幕或应用程序抽屉单击时,它会将用户发送到特定(系统安装的)应用程序(系统设置、日历、浏览器等) 例如,我正在尝试在每次启动应用程序时打开系统设置,就像设置快捷方式一样 有没有可能按照我想要的方式实现这一点?有人有什么建议吗 这是我的密码: import android.app.Activity; import android.content.Intent; import android.content.pm.PackageManager; pub

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

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

有没有可能按照我想要的方式实现这一点?有人有什么建议吗

这是我的密码:

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

您必须调用LaunchComponent,这可以在onCreate first life cycle回调函数中完成

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

}

您必须调用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);

}

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

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!
            }
        }
    }
}

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

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!
            }
        }
    }
}

到底是什么问题?由于上面的代码不完整,到底是什么问题?由于上面的代码不完整是的,我仍然有问题,在Eclipse中,启动组件希望它是无效的,我看不出如何设置我想要的包,我是用com.xxx.xxx.xx替换packageName,还是用com.xxx.xxx.xxx的值创建一个名为packageName的字符串,另外,我的公共案例是MainActivity扩展活动{是正确的公共类,您可以从中获得包名'com.xxx.xxx.xxx'?abc?,这也是指什么?我还需要为包名或manifestE/AndroidRuntime(281)中的任何特殊内容创建一个字符串:在android.app.ActivityThread.access$2300(ActivityThread.java:125)E/AndroidRuntime(281):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)E/AndroidRuntime(281):在android.os.Handler.dispatchMessage(Handler.java:99)E/AndroidRuntime(281):在android.os.Looper.loop(Looper.java:123)E/AndroidRuntime(281):在android.app.ActivityThread.main(ActivityThread.java:4627)第二部分.E/AndroidRuntime(281):在java.lang.reflect.Method.invokenactive(本机方法)E/AndroidRuntime(281):在java.lang.reflect.Method.invoke(Method.java:521)E/AndroidRuntime(281):在com.android.internal.os.ZygoteInit$methodandargscaler.run(zyteinit.java:868)E/AndroidRuntime(281):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)E/AndroidRuntime(281):在dalvik.system.NativeStart.main(本机方法)是的,我仍然有问题,在Eclipse中,启动组件希望它是无效的,我看不出如何设置我想要的包,我会用com.xxx.xxx.xx替换packageName,还是我会用com.xxx.xxx.xxx的值创建一个名为packageName的字符串,我的公共案例是MainActivity extensions Activity{是从中获得包名'com.xxx.xxx.xxx'的合适的公共类吗?abc?这也是指什么?我是否需要在manifest/AndroidRuntime(281)中为包名或任何特殊的内容创建一个字符串:在android.app.ActivityThread.access$2300(ActivityThread.java:125)E/AndroidRuntime(281):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)E/AndroidRuntime(281):在android.os.Handler.dispatchMessage(Handler.java:99)E/AndroidRuntime(281):在android.os.Looper.loop(Looper.java:123)E/AndroidRuntime(281):在android.app.ActivityThread.main(ActivityThread.java:4627)第二部分。E/AndroidRuntime(281):在java.lang.reflect.Method.invokenactive(Native Method)E/AndroidRuntime(281):在java.lang.reflect.Method.invoke(Method.java:521)E/AndroidRuntime(281):在com.android.internal.os.ZygoteInit$methodandargscaler.run(zgoteinit.java:868)E/AndroidRuntime(281):在com.android.internal.os.zgoteinit.main(zgoteinit.java:626)E/AndroidRuntime(281):在dalvik.system.NativeStart.main(本机方法)中,这可能会有所帮助,对不起(新开发人员)我应该在哪里将其输入到上面的代码中,在onCreate?之后,或者在推荐的上面的LaunchComponent之后,您可以将其插入onCreate()中,或者更好地插入onResume()中-没有问题,我讨厌继续向你们寻求支持,我觉得自己真的很愚蠢。希望最终这些东西会点击,你能提供完整java文件的示例吗?清单是什么样子的,我假设只是action main和category launcher的基本意图过滤器。对吗?请在更新的答案中查看上面的内容,是的Manifests只需要action main和category launcher的基本意图过滤器这可能会有所帮助,对不起(新开发人员)我应该在哪里将其输入到上面的代码中,在onCreate?之后或在推荐的上面的LaunchComponent之后,您可以将其插入onCreate()中,或者更好地插入onResume()中-没有问题,我讨厌继续向你们寻求支持,我觉得自己真的很愚蠢。希望最终这些东西会点击,你能提供完整java文件的示例吗?清单是什么样子的,我假设只是action main和category launcher的基本意图过滤器。对吗?请在更新的答案中查看上面的内容,是的清单只需要action main和category launcher的基本意图过滤器