我得到了这样的代码:
_pm = _context.PackageManager;
List<string> packageList = new List<string>();
Intent intent = new Intent(Intent.ActionMain);
intent.AddCategory(Intent.CategoryLeanbackLauncher);
var list = _pm.QueryIntentActivities(intent, PackageInfoFlags.MetaData);
var counter = 0;
foreach (var app in list)
{
counter++;
ApplicationInfo ai = _pm.GetApplicationInfo(app.ActivityInfo.PackageName, 0);
if (filter.Equals(IApplicationsControl.Filter.AppsOnly))
{
if (ai.Category != ApplicationCategories.Game)
{
Android.Util.Log.Debug("pm", counter + ". " + ai.Category + " - " + app.ActivityInfo.PackageName);
packageList.Add(app.ActivityInfo.PackageName);
}
}
}输出:
1. Undefined - com.android.vending
2. Undefined - com.google.android.youtube.tv
3. Undefined - com.myApp.test1
4. Undefined - com.android.traceur
5. Undefined - com.arris.android.stb.rcu
6. Undefined - com.arris.upgradetest
7. Undefined - com.clearchannel.iheartradio.application.tvapplication
8. Undefined - com.ericsson.tv
9. Audio - com.google.android.music
10. Undefined - com.google.android.play.games
11. Undefined - com.uei.uassample
12. Undefined - com.FDGEntertainment.redball4.gp <--- this is a game
13. Undefined - com.fgol.HungrySharkEvolution <--- this is a game
14. Undefined - com.hyperkani.bomberfriends <--- this is a game
15. Undefined - com.madfingergames.deadtrigger2 <--- this is a game
16. Undefined - com.secretexit.turbodismount <--- this is a game
17. Undefined - com.vectorunit.purple.googleplay我安装了几个游戏,比如“饥饿的鲨鱼”和“DeadTrigger2”,我打开了APK,两个应用程序的AndroidManifest.xml文件中都设置了isGame:true。
上面的代码列出了我的应用程序的类别为未定义的,这包括我的2个游戏,几乎所有的应用程序都是这样的,除了一些播放音乐的音频应用程序。
那么,到底为什么我的代码不能工作呢?
我关注的是这个链接:
How to check if the app is game or not programmatically?
另外,我发现了这个,这让我很担心:
How can check app is game or not android?
那么,到底有没有可能检查一个应用程序是不是一个游戏呢?
我的lvl接口是28+
发布于 2020-06-17 16:07:02
当然,我搜索了两天没有答案,然后最终决定在这里发布一个问题,当然现在我找到了答案。
_pm = _context.PackageManager;
List<string> packageList = new List<string>();
Intent intent = new Intent(Intent.ActionMain);
intent.AddCategory(Intent.CategoryLeanbackLauncher);
var list = _pm.QueryIntentActivities(intent, PackageInfoFlags.MetaData);
foreach (var app in list)
{
ApplicationInfo ai = _pm.GetApplicationInfo(app.ActivityInfo.PackageName, 0);
var allFlags = ai.Flags;
if (allFlags.HasFlag(ApplicationInfoFlags.IsGame))
{
packageList.Add(app.ActivityInfo.PackageName);
}
}我做错什么了?我看到,出于运气,ApplicationInfo变量ai获得了一个字段Flags,其中包含了正确的标志(不是标志FLAG_IS_GAME也不是ApplicationCategories.Game))此外,我还找到了要从(ApplicationInfoFlags.IsGame)中挑选IsGame的正确类
剩下的就很简单了。
结论是,获取应用程序信息的方法要么是游戏,要么不是类别,或者FLAG_IS_GAME似乎不像它应该的那样工作。
这对我很有效,希望下一个遇到同样问题的人:)
https://stackoverflow.com/questions/62409568
复制相似问题