如何搜索应用程序名称而不是包名称并将其打开?

时间:2016-04-02 17:36:00

标签: android eclipse android-studio

这是我在主要活动中的代码..

    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Button bClock = (Button) findViewById(R.id.buttonSearch);

    bClock.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            String packageName = "com.android.gallery3d";
            Intent intent = getPackageManager().getLaunchIntentForPackage(packageName);

            if(intent == null) {
                Intent marketIntent = new Intent(Intent.ACTION_VIEW);
                marketIntent.setData(Uri.parse("market://details?id=packagename"));
                startActivity(marketIntent);
            }
            startActivity(intent);
            }
        });
    }

我的问题是,是否可以不使用包名称(com.android.gallery3d)来搜索我的所有应用程序?例如,我想搜索“facebook”然后输入然后搜索。< / p>

因为如果我使用该软件包名称,我将无法打开新安装的应用程序..提前感谢。

1 个答案:

答案 0 :(得分:0)

您可以使用PackageManager

final PackageManager pm = context.getPackageManager();
ApplicationInfo ai;
try {
    ai = pm.getApplicationInfo(packageName, 0);
} catch (final NameNotFoundException e) {
    ai = null;
}
final String applicationName = (String) (ai != null ? pm.getApplicationLabel(ai) : "(unknown)");

这也是

CharSequence c = pm.getApplicationLabel(pm.getApplicationInfo(info.processName,PackageManager.GET_META_DATA));

这将返回其清单的<application>标记中定义的应用程序名称。