我正在开发一个应用程序,我想在其中启动我的设备上安装的任何应用程序。我试过以下代码。
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中,而是工作。帮我解决这个问题
答案 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);
}
}