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、推送到播放列表到播放器
|