Opening System Application Using Intent

2019-06-25 22:33发布

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

例如,目前我正在试图打开每当我的应用程序启动的系统设置,就像对于设置的快捷操作。

是否有可能实现这个我想要的方式? 有没有人有什么建议?

这里是我的代码:

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

Answer 1:

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

}


Answer 2:

在这个例子中,你可以打开系统的闹钟应用,希望有帮助,例如活动:

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


文章来源: Opening System Application Using Intent