查找要通过Intent启动的包名称

时间:2019-01-08 01:43:50

标签: android android-studio package

我们如何使某个应用具有通用性,以便能够在各种设备上启动其他应用?

一个应用在不同设备上具有不同的程序包名称。 那么问题是,无论平台如何,我们如何创建通用应用程序来调用这些应用程序?

例如,假设我的手机上安装了IMO,并且希望我的应用程序能够启动IMO。或者我看到的另一个问题是图库。我在一部手机上启动了它,但是包裹名称在另一部手机上却不同!那么我们应该如何编写一个应用程序以启动其他应用程序并在大多数平台上工作?

1 个答案:

答案 0 :(得分:-1)

谢谢您的答复。问题与找到正确的应用程序名称有关。如果我想说在所有平台上启动IMO,该如何做。我看过的2部Android手机上的Coz名称不同!在大多数应用程序中都是如此。我正在尝试计算器。一样。它们在不同平台上的名称不同。我将在此处列出“计算器示例”:

   Intent launchIntent = 
   getPackageManager().getLaunchIntentForPackage("com.doro.apps.calculator");
    if (launchIntent != null) {
        try {
            // startActivity(launchIntent);
            startActivity(launchIntent);
        } // in case Instagram not installed in your device
        catch (ActivityNotFoundException ex) {
            ex.printStackTrace();
        }
    } else {
        Log.i("openCalCulator", "Intent is null");
    }
}

您会看到这太具体了:com.doro.apps.calculator 如果简单的计算器使用不同的名称调用,我只能想象其他应用程序也将使用不同的名称。

I tried using getPackageManager but youtube got started instead of calculator!

    items = new ArrayList<HashMap<String,Object>>();
    pm = getPackageManager();
    packs = pm.getInstalledPackages(0);
    for (PackageInfo pi : packs)
    {
        HashMap<String, Object> map = new HashMap<String, Object>();
        map.put("appName", pi.applicationInfo.loadLabel(pm));
        map.put("packageName", pi.packageName);
        items.add(map);
    }