3

我的应用程序中有 4 个按钮,在其中 2 个按钮中,我需要检查我要运行的应用程序是否在我的设备中。如果存在,则运行,否则,显示敬酒。

问题是当我展示敬酒时,应用程序关闭。在 startActivity(Intent) 中显示 Toast 的最佳方式是什么???

这是代码:

public void onClick(View v) {

    Intent LaunchIntent = null;
    boolean isTouch = isAppInstalled("com.enflick.android.ping");
    boolean isWpress = isAppInstalled("org.wordpress.android");


    switch (v.getId()) {
    case (R.id.botonPortafoli):
        LaunchIntent = new Intent(this, PortafoliActivity.class);
        break;
    case (R.id.botonSocial):
        LaunchIntent = new Intent(this, SocialActivity.class);
        break;

    case (R.id.botonTouch):

        if (isTouch) {
            LaunchIntent = getPackageManager().getLaunchIntentForPackage(
                    "com.enflick.android.ping");

        } else {
            Toast.makeText(this, R.string.no_inst, Toast.LENGTH_LONG)
                    .show();

            break;
        }

        break;
    case (R.id.botonWpress):

        if (isWpress) {
            LaunchIntent = getPackageManager().getLaunchIntentForPackage(
                    "org.wordpress.android");

            break;

        } else {

            Toast.makeText(this, R.string.no_inst, Toast.LENGTH_LONG)
            .show();


            break;
        }

    }
startActivity(LaunchIntent);
4

1 回答 1

0

而不是isAppInstalled("com.enflick.android.ping")你可以用 try/catch 包围你的电话。我认为您无法在不实际启动应用程序的情况下检查该应用程序是否已安装...

public void onClick(View v) {

    Intent LaunchIntent = new Intent();

    if (v.getId() == (R.id.botonPortafoli)) {
        LaunchIntent = new Intent(this, PortafoliActivity.class);
        startActivity(LaunchIntent);
    } else if (v.getId() == (R.id.botonSocial)) {
        LaunchIntent = new Intent(this, SocialActivity.class);
        startActivity(LaunchIntent);
    } else if (v.getId() == (R.id.botonTouch)) {
        try {
            LaunchIntent = getPackageManager().getLaunchIntentForPackage(
                    "com.enflick.android.ping");
            startActivity(LaunchIntent);
        } catch (Exception e) {
            e.printStackTrace();
            Toast.makeText(this, R.string.no_inst, Toast.LENGTH_LONG).show();
        }
    } else if (v.getId() == (R.id.botonWpress)) {
        try {
            LaunchIntent = getPackageManager().getLaunchIntentForPackage(
                    "org.wordpress.android");
            startActivity(LaunchIntent);
        } catch (Exception e) {
            e.printStackTrace();
            Toast.makeText(this, R.string.no_inst, Toast.LENGTH_LONG).show();
        }
    }
}

希望这对你有用,当我试图验证官方 Twitter 应用程序是否安装在设备上时,它对我有用。

顺便说一句,为了安全起见,最好使用if-else而不是switch避免资源 id 不是最终问题。

于 2012-12-05T16:53:16.743 回答