using System; using Android.Content; using Android.OS; namespace Shared { public class CommonClass { /// <summary> /// 打开应用 /// </summary> /// <param name="packetName">包å</param> /// <param name="activityName"></param> public static void OpenApp(string packetName) { if (Application.Activity == null || packetName == null) { return; } if (!isAvilible(Application.Activity, packetName)) { return; } var pi = Application.Activity.PackageManager.GetPackageInfo(packetName, 0); if (pi == null) { return; } var resolveIntent = new Intent(Intent.ActionMain, null); resolveIntent.AddCategory(Intent.CategoryLauncher); resolveIntent.SetPackage(pi.PackageName); var apps = Application.Activity.PackageManager.QueryIntentActivities(resolveIntent, 0); if (0 < apps.Count) { var ri = apps[0]; string pkgName = ri.ActivityInfo.PackageName; string className = ri.ActivityInfo.Name; var intent = new Intent(Intent.ActionMain); intent.AddCategory(Intent.CategoryLauncher); //launchFlags:创建一个新的进程æ¥è¿è¡Œè¿™ä¸ªActivity,也å¯ä»¥ä¸éœ€è¦ï¼Œè¿™æ ·å°±æ˜¯åœ¨å½“å‰APP内打开(åŒä¸€ä¸ªè¿›ç¨‹ï¼‰ intent.SetFlags(ActivityFlags.NewTask | ActivityFlags.ResetTaskIfNeeded); intent.SetAction("android.intent.action.VIEW"); var cn = new ComponentName(pkgName, className); intent.SetComponent(cn); Application.Activity.StartActivity(intent); } } /** * 检查手机上是å¦å®‰è£…了指定的软件 * @param context * @param packageName * @return */ public static bool isAvilible(Context context, string packageName) { var packageManager = context.PackageManager; var packageInfos = packageManager.GetInstalledPackages(0); var packageNames = new System.Collections.Generic.List<string>(); if (packageInfos != null) { for (int i = 0; i < packageInfos.Count; i++) { var packName = packageInfos[i].PackageName; packageNames.Add(packName); } } // 判æ–packageNames䏿˜¯å¦æœ‰ç›®æ ‡ç¨‹åºçš„包å,有TRUE,没有FALSE return packageNames.Contains(packageName); } /// <summary> /// æ‰“å¼€ç•Œé¢ /// </summary> /// <param name="action">Action.</param> public static void OpenAction(string action){ try { Application.Activity.StartActivity(new Intent(action)); }catch{} } } } //ä½ å¥½ï¼Œç»è¿‡æµ‹è¯•,我们å‘çŽ°æœ‰ä¸¤ç§æ–¹æ³•都å¯ä»¥å®žçްæµåª’ä½“çš„æ’æ”¾ã€‚ //第一ç§ï¼šå¯ä»¥å®žçŽ°éŸ³ä¹æŽ¨é€æ’放,但体验效果很ä¸å¥½ï¼Œå› 为获å–音ä¹çœŸå®žæ’æ”¾åœ°å€æ—¶é—´å¾ˆé•¿ï¼Œå®žçްæ€è·¯å¦‚下: //1ã€æˆ‘们App先获å–TokenåŠæ—¶é—´ //2ã€ç„¶åŽç”¨Tidalå¸å·ç›´æŽ¥ç™»å½•airableæœåС噍 //3ã€èŽ·å–æ’æ”¾åˆ—è¡¨ï¼ˆä¸æ˜¯çœŸå®žçš„æ’æ”¾åœ°å€ï¼‰ //4ã€æ ¹æ®æ’放列表去获å–çœŸå®žçš„æ’æ”¾åœ°å€ï¼ˆè¿™é‡ŒèŽ·å–æ—¶é—´å¾ˆé•¿ï¼Œæ¯ä¸€é¦–时间长的有五å…秒都有å¯èƒ½ï¼‰ //5ã€æŽ¨é€åˆ°æ’放器 //第二ç§ï¼šä½“验效果很好,但å‘é€åˆ°æ’æ”¾çš„å¯†ç æ˜¯åŠ å¯†çš„ï¼Œéœ€è¦ç®—法。实现æ€è·¯å¦‚下: //1ã€æˆ‘们App先获å–TokenåŠæ—¶é—´ //2ã€ç„¶åŽç”¨Tidalå¸å·ç›´æŽ¥ç™»å½•airableæœåŠ¡å™¨å¹¶åŒæ—¶æŠŠç”¨æˆ·å和密ç å‘Šè¯‰æ’æ”¾å™¨ //3ã€èŽ·å–æ’æ”¾åˆ—è¡¨ï¼ˆä¸æ˜¯çœŸå®žçš„æ’æ”¾åœ°å€ï¼Œå…³é”®ä¿¡æ¯æ˜¯ID) //4ã€æŽ¨é€åˆ°æ’æ”¾åˆ—è¡¨åˆ°æ’æ”¾å™¨