【问题标题】:[UWP]launch mobile aplications in uwp C#[UWP]在 uwp C# 中启动移动应用程序
【发布时间】:2017-03-22 18:22:29
【问题描述】:

我在 Windows 10 移动设备门户中发现了一些允许在用户手机上运行应用程序的新 API。 你可以启动它来查看结果:http://{PhoneIP}/api/app/packagemanager/packages 还有另一个 API 可以启动应用程序: api/taskmanager/app

启动现代应用程序

HTTP 动词:POST

参数

appid : 要启动的应用的 PRAID,十六进制编码

package : 应用包的全名,十六进制编码

我有这段代码来运行应用程序,但没有任何想法?

public class PackageInfoToRun
{
    public string appid { get; set; }
    public string package { get; set; }
    public string PackageFamilyName { get; set; }
}

public class PhoneInstalledPackages
    {
        public Installedpackage[] InstalledPackages { get; set; }
    }

    public class Installedpackage
    {
        public string Name { get; set; }
        public string PackageFamilyName { get; set; }
        public string PackageFullName { get; set; }
        public int PackageOrigin { get; set; }
        public string PackageRelativeId { get; set; }
        public bool IsXAP { get; set; }
    }

private static string Encode(string strn)
    {
        var toEncodeAsBytes = System.Text.ASCIIEncoding.ASCII.GetBytes(strn);
        string appName64 = System.Convert.ToBase64String(toEncodeAsBytes);
        appName64 = appName64.Replace(" ", "20%");
        return appName64;
    }

public async Task<PhoneInstalledPackages> GetInstalledApps()
    {
        //  /api/app/packagemanager/packages
        HttpWebRequest webrequest = (HttpWebRequest)WebRequest.Create("http://127.0.0.1/api/app/packagemanager/packages");
        string res = "";
        webrequest.Method = "GET";
        try
        {
            using (var webresponse = await webrequest.GetResponseAsync())
            using (StreamReader loResponseStream = new StreamReader(webresponse.GetResponseStream()))
            {
                res = loResponseStream.ReadToEnd();
            }
            var des = JsonConvert.DeserializeObject<PhoneInstalledPackages>(res);
            return des;
        }
        catch (Exception ex)
        {
            return null;
        }
    }

public async Task<bool> RunAppAsync(string appid, string packagename)
    {
        HttpResponseMessage http = new HttpResponseMessage();
        string str;
        try
        {
            var package = new PackageInfoToRun()
            {
                appid = Encode(appid),
                package = Encode(packagename)
            };
            using (HttpClient client = new HttpClient())
            {
                var serial = JsonConvert.SerializeObject(package);
                http = await client.PostAsync("http://127.0.0.1/api/taskmanager/app", new StringContent(serial, Encoding.UTF8, "application/json"));
                using (HttpResponseMessage response = http)
                {
                    str = await response.Content.ReadAsStringAsync();
                    string retur = str;
                    if (retur.Contains("true"))
                    {
                        return true;
                    }
                    return false;
                }
            }
        }
        catch (Exception ex)
        {
            return false;
        }
    }

我的代码出了什么问题?谢谢:)

【问题讨论】:

  • 代码的哪一部分不工作?
  • public async Task RunAppAsync(string appid, string packagename) can't run application and go to search in store!
  • 是否抛出异常?
  • 不,没有例外,响应消息是:"{\"Reason\" : \"Missing app id or package name argument.\"}"
  • 一个问题是当 API 要求您使用 hex64 编码时,您使用的是 base64 编码。您能否提供指向 API 参考的链接?

标签: c# uwp windows-10-mobile


【解决方案1】:

我用你的代码做了一些小的改动,它对我有用。 现在 RunAppAsync 看起来像这样。不要忘记指定一个PORT。

HttpClient client = new HttpClient();           
var serial = JsonConvert.SerializeObject(package);
var result = await client.PostAsync(String.Format("http://127.0.0.1:*PORT*/api/taskmanager/app?appid={0}&package={1}", package.appid, package.package), new StringContent(serial));

包裹在哪里

var package = new PackageInfoToRun()          
{
    appid = Encode(app.PackageRelativeId),
    package = Encode(app.PackageFullName),
};

app 变量是 InstalledPackage 类的一个实例。

【讨论】:

    猜你喜欢
    • 2017-06-18
    • 2018-04-03
    • 2017-09-18
    • 1970-01-01
    • 2017-06-02
    • 2017-01-25
    • 2016-10-15
    • 2018-05-12
    • 1970-01-01
    相关资源
    最近更新 更多