using System;
using Android.Content;
using Android.OS;
namespace Shared
{
public class CommonClass
{
///
/// 打开应用
///
/// 包名
///
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();
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);
}
///
/// 打开界面
///
/// Action.
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、推送到播放列表到播放器