【发布时间】: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