如何从Android中的另一个应用程序启动应用程序

时间:2016-03-27 06:19:38

标签: 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);
    PackageManager managerclock = getPackageManager();
    i = managerclock.getLaunchIntentForPackage(app);
    i.addCategory(Intent.CATEGORY_LAUNCHER);
    startActivity(i);
  }
});

显示错误:

  

无法引用定义的内部类中的非final变量app   用另一种方法

但如果我直接使用" com.whatsapp"它不是存储在String中,而是工作。帮我解决这个问题

3 个答案:

答案 0 :(得分:2)

对于您的代码更正,请将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
}

答案 1 :(得分:1)

如果是,那就最后

final String app="com.whatsapp";

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

public class MyClass {

String app="com.whatsapp";

//Other methods
}

答案 2 :(得分:0)

使用以下功能

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