我正在尝试制作一个简单的应用程序,当用户从主屏幕或应用程序抽屉中点击时,该应用程序将用户发送到特定的(系统安装的)应用程序(系统设置,日历,浏览器等)。
例如,我正在尝试在启动应用程序时打开系统设置,就像设置的快捷方式一样。
有可能以我想要的方式实现吗?有没有人有什么建议?
这是我的代码:
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不是我最好的语言。对任何批评或建议开放。
答案 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!
}
}
}
}