2017-04-17 206 views
1

我正在尝试为Android 4.0.3创建一个应用程序,它监听UDP电报并启动其他应用程序,具体取决于收到的消息。从我的应用程序启动Android视频应用程序

我已经能够推出像“音乐”应用中的一些应用程序,:

Intent intent = new Intent("android.intent.action.MUSIC_PLAYER"); 
intent.SetFlags(ActivityFlags.NewTask); 
context.StartActivity(intent); 

是否有机会做同样的视频应用程序? 我没有找到一个有效的命令。 (特别是没有加载定义的视频,像ACTION_VIEW会做)

我也想使用的startApp,如下所示:

OpenApp(context, "com.google.android.apps.maps"); 

但我也不要找到一个有效的软件包名称为视频应用程序,就像其他应用程序一样。

背景: 这是一个汽车项目。 Android平板电脑应该用作信息娱乐系统,我希望使用“Ardoino Leonardo以太网”在最重要的应用程序之间切换,而不是使用硬键而不是触摸屏。

回答

0

我宁愿避免对任何软件包名称进行硬编码,因为这样做会导致代码在不同的API和不同供应商的ROM上分解,因为它们包含自己的“播放器”和“查看器”。

您可以确定哪些软件包使用软件包管理器,使查询它安装在将针对不同的URI和MIME类型,即

var activityIntent = new Intent(Intent.ActionView); 
activityIntent.SetDataAndTypeAndNormalize(Uri.Parse("pseudo.mp4"), "video/mp4"); 
var resolvedActivityList = PackageManager.QueryIntentActivities(activityIntent, PackageInfoFlags.MatchAll); 
foreach (var info in resolvedActivityList) 
{ 
    Log.Debug("SO", info.ActivityInfo.ApplicationInfo.PackageName); 
} 
+0

嗯,这就是一个想法。 令人伤心的ony在我的情况下返回“com.archos.mediacenter” 这是一个音乐/视频应用程序,默认情况下以“Music”开头。 似乎我不得不打电话给com.archos.mediacenter.video.browser.BrowserActivityVideo直接去视频,但不知道怎么做(必须在那个方向做一些recherches) –

+0

我发现如何做到这一点: 'intent.SetClassName(“com.archos.mediacenter”,“com.archos.mediacenter.video.browser.BrowserActivityVideo”);' –

相关问题