我有问题。我有一个电话簿应用程序。我想创建 Tile(在 Windows Phone 主屏幕中),在我单击主屏幕上的 Tile 后将调用该号码。
那可能吗?我应该怎么做才能做出这样的事情?我可以创建自定义 Tile 或者我应该在我的应用程序启动后创建一些方法?
我有问题。我有一个电话簿应用程序。我想创建 Tile(在 Windows Phone 主屏幕中),在我单击主屏幕上的 Tile 后将调用该号码。
那可能吗?我应该怎么做才能做出这样的事情?我可以创建自定义 Tile 或者我应该在我的应用程序启动后创建一些方法?
使用类似于以下代码的内容创建动态磁贴:
string number = "000 - 000 000";
ShellTile tile = ShellTile.ActiveTiles.FirstOrDefault(t => t.NavigationUri.ToString().Contains("phone=" + number));
if (tile == null)
{
StandardTileData tileData = new StandardTileData();
tileData.Title = "Call " + number;
ShellTile.Create(new Uri("/MainPage.xaml?phone=" + number, UriKind.Relative), tileData);
}
然后重写 MainPage.xaml 中的 OnNavigatedTo,并添加以下代码:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
if (NavigationContext.QueryString.ContainsKey("phone"))
{
string number = NavigationContext.QueryString["phone"];
PhoneCallTask task = new PhoneCallTask();
task.PhoneNumber = number;
task.Show();
}
base.OnNavigatedTo(e);
}
如果还没有做,还需要"ID_CAP_PHONEDIALER"
在文件中添加capability WMAppManifest.xml
,否则上面调用的时候会出现异常task.Show();
。
现在您有了一个活动磁贴,单击该磁贴将启动应用程序并拨打该号码(但用户仍必须在对话框中确认,这是您无法禁用的)
您还可以使用 CodePlex 中的 Mangopollo 库来创建辅助动态磁贴:http: //mangopollo.codeplex.com/