[UWP]在UWP C#中推出移动应用程序

本文关键字:UWP 移动 应用程序 | 更新日期: 2023-09-27 18:29:44

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

启动现代应用

HTTP谓词:POST

参数

appid:要启动的应用程序的PRAID,hex64编码的

package:应用程序包的全名,hex64编码

我有这个代码来运行应用程序,但不起作用,你知道吗?

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;
        }
    }

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

[UWP]在UWP C#中推出移动应用程序

我在使用您的代码时做了一些小改动,它对我很有用。现在RunAppAsync看起来是这样的。不要忘记指定端口

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),
};

应用程序变量是InstalledPackage类的一个实例。