Android 的 Xamarin C#:搜索应用程序和路径
Xamarin C# for Android : Searching for an App and path
目标:我需要查找设备上是否安装了应用程序并找到它的路径..
我看到使用 PackageManager
,您通常可以这样做,但我想改进它。
我知道如果你使用 com.google.chrome
你会发现安装了 chrome 资源管理器,
但是当你简单地寻找 Chrome
.
时,这会失败
在某些设备上 Chrome
(以及其他应用程序,如 Opera
、Mini
等)未安装为 com.google.chrome
。
那么,如何找到没有 com.google
且仅使用 Chrome
作为搜索条件的应用程序呢?
简单,只需组合 PackageManager
和 ApplicationInfo
,然后检查应用名称是否包含您的搜索字符串。这是一些示例代码:
var searchQuery = "chrome";
var flag = PackageInfoFlags.Activities;
var apps = PackageManager.GetInstalledApplications(flag);
foreach(var app in apps)
{
try
{
var appInfo = PackageManager.GetApplicationInfo(app.PackageName, 0);
var appLabel = PackageManager.GetApplicationLabel(appInfo);
if (appLabel.ToLower().Contains(searchQuery.ToLower()))
{
var builder = new AlertDialog.Builder(this);
builder.SetTitle("Found it!");
builder.SetMessage(appLabel + " installed at: " + app.SourceDir);
builder.Show();
}
}
catch (PackageManager.NameNotFoundException e) { continue; }
}
目标:我需要查找设备上是否安装了应用程序并找到它的路径..
我看到使用 PackageManager
,您通常可以这样做,但我想改进它。
我知道如果你使用 com.google.chrome
你会发现安装了 chrome 资源管理器,
但是当你简单地寻找 Chrome
.
在某些设备上 Chrome
(以及其他应用程序,如 Opera
、Mini
等)未安装为 com.google.chrome
。
那么,如何找到没有 com.google
且仅使用 Chrome
作为搜索条件的应用程序呢?
简单,只需组合 PackageManager
和 ApplicationInfo
,然后检查应用名称是否包含您的搜索字符串。这是一些示例代码:
var searchQuery = "chrome";
var flag = PackageInfoFlags.Activities;
var apps = PackageManager.GetInstalledApplications(flag);
foreach(var app in apps)
{
try
{
var appInfo = PackageManager.GetApplicationInfo(app.PackageName, 0);
var appLabel = PackageManager.GetApplicationLabel(appInfo);
if (appLabel.ToLower().Contains(searchQuery.ToLower()))
{
var builder = new AlertDialog.Builder(this);
builder.SetTitle("Found it!");
builder.SetMessage(appLabel + " installed at: " + app.SourceDir);
builder.Show();
}
}
catch (PackageManager.NameNotFoundException e) { continue; }
}