Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android中从其他应用程序启动应用程序_Android_Launch - Fatal编程技术网

如何在android中从其他应用程序启动应用程序

如何在android中从其他应用程序启动应用程序,android,launch,Android,Launch,我正在开发一个应用程序,我想在其中启动设备上安装的任何应用程序。我尝试了以下代码 Button bClock = (Button) findViewById(R.id.button1); String app="com.whatsapp"; bClock.setOnClickListener(new OnClickListener() { public void onClick(View v) { Intent i = new Intent(Intent.ACTION_MAIN);

我正在开发一个应用程序,我想在其中启动设备上安装的任何应用程序。我尝试了以下代码

Button bClock = (Button) findViewById(R.id.button1);
String app="com.whatsapp";
bClock.setOnClickListener(new OnClickListener() {
  public void onClick(View v) {
    Intent i = new Intent(Intent.ACTION_MAIN);
    PackageManager managerclock = getPackageManager();
    i = managerclock.getLaunchIntentForPackage(app);
    i.addCategory(Intent.CATEGORY_LAUNCHER);
    startActivity(i);
  }
});
它显示错误:

无法在定义的内部类中引用非最终变量app 用不同的方法


但如果我直接使用com.whatsapp而不是存储在字符串中,它就可以工作了。请帮助我解决此问题

如果是,请最终解决

final String app="com.whatsapp";

将其声明为类的全局变量,如

public class MyClass {

String app="com.whatsapp";

//Other methods
}

如果是这样的话,那就定下来

final String app="com.whatsapp";

将其声明为类的全局变量,如

public class MyClass {

String app="com.whatsapp";

//Other methods
}

使用以下函数

public void startNewActivity(Context context, String packageName) {
    Intent intent = context.getPackageManager().getLaunchIntentForPackage(packageName);
    if (intent != null) {
        // We found the activity now start the activity
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(intent);
    } else {
        // Bring user to the market or let them choose an app?
        intent = new Intent(Intent.ACTION_VIEW);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        intent.setData(Uri.parse("market://details?id=" + packageName));
        context.startActivity(intent);
    }
}

使用以下函数

public void startNewActivity(Context context, String packageName) {
    Intent intent = context.getPackageManager().getLaunchIntentForPackage(packageName);
    if (intent != null) {
        // We found the activity now start the activity
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(intent);
    } else {
        // Bring user to the market or let them choose an app?
        intent = new Intent(Intent.ACTION_VIEW);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        intent.setData(Uri.parse("market://details?id=" + packageName));
        context.startActivity(intent);
    }
}

对于您的代码更正,请使用String app=com.whatsapp;最后一个变量,或者您可以直接使用包名,如下所示

您应该使用包管理器的功能

Context ctx=this; // or you can replace **'this'** with your **ActivityName.this**
try {
Intent i = ctx.getPackageManager().getLaunchIntentForPackage("com.whatsapp");
ctx.startActivity(i);
} catch (NameNotFoundException e) {
    // TODO Auto-generated catch block
}

对于您的代码更正,请使用String app=com.whatsapp;最后一个变量,或者您可以直接使用包名,如下所示

您应该使用包管理器的功能

Context ctx=this; // or you can replace **'this'** with your **ActivityName.this**
try {
Intent i = ctx.getPackageManager().getLaunchIntentForPackage("com.whatsapp");
ctx.startActivity(i);
} catch (NameNotFoundException e) {
    // TODO Auto-generated catch block
}

最后一个变量的问题。只需将字符串应用程序声明为全局应用程序,并在按钮中引用。单击按钮中的引用是什么意思?单击按钮可以详细解释它吗。我不熟悉androidcheck shree krishna的答案。最终变量的问题可能重复。只需将字符串应用程序声明为全局应用程序,并在按钮中引用。单击按钮中的引用是什么意思?单击按钮可以详细解释它吗。我对androidcheck shree krishna的答案很陌生。可能是感谢的复制品,它很有效。但在我的例子中,应用程序必须从微调器中选择。所以我用String来strore包名,谢谢它的工作。但在我的例子中,应用程序必须从微调器中选择。因此,我使用String来strore包名item=parent.getItemAtPositionposition.toString;StartNewActivityContext,项目;我使用微调器对象来选择应用程序。所选应用程序存储在字符串变量中。我试过你的解决办法。但是你发送的包名不起作用。请尝试通过发送fix参数来运行代码,以确保代码workitem=parent.getItemAtPositionposition.toString;StartNewActivityContext,项目;我使用微调器对象来选择应用程序。所选应用程序存储在字符串变量中。我试过你的解决办法。但是你发送的包名不起作用。请尝试通过发送fix参数来运行代码,以确保代码正常工作