自定义锁屏壁纸 ---For WP8

第一步:添加一段固定代码,到WMAppManifest.xml。

1 <Extensions>
2       <Extension ExtensionName="LockScreen_Background" ConsumerID="{111DFF24-AA15-4A96-8006-2BFF8122084F}" TaskID="_default" />
3 </Extensions>

此节点为<Tokens>的兄弟节点,置于其下。

第二步:启动背景图片设置启动器。

1  var op = await Windows.System.Launcher.LaunchUriAsync(new Uri("ms-settings-lock:"));

如果第一步正确,选择自己的应用后,界面应如下:

第三步:选择图片(只能是本地图片),设置到锁屏界面。

 1         /// <summary>
 2         /// 设置锁屏背景
 3         /// </summary>
 4         /// <param name="filePathOfTheImage">本地图片路径</param>
 5         /// <param name="isAppResource"></param>
 6         private async void LockHelper(string filePathOfTheImage, bool isAppResource)
 7         {
 8             try
 9             {
10                 bool isProvider = LockScreenManager.IsProvidedByCurrentApplication;
11                 if (!isProvider)
12                 {
13                     //设置此应用为锁屏提供者
14                     LockScreenRequestResult op = await LockScreenManager.RequestAccessAsync();
15                     //返回结果为:Granted,则设置成功; Denied, 则设置失败
16                     isProvider = op == LockScreenRequestResult.Granted;
17                 }
18                 if (isProvider)
19                 {
20                     // ms-appx:/// :代表应用安装文件夹下的根目录
21                     // ms-appdata:///Local/ :代表的是应用独立存储区下的根目录
22                     // 两者区别在于,前者图片在应用上传时就确定,后者可先从网络获取,再保持到独立存储器来设置背景
23                     string shema = isAppResource ? "ms-appx:///" : "ms-appdata:///Local/";
24                     var uri = new Uri(shema+ filePathOfTheImage);
25 
26                     //设置锁屏背景源
27                     LockScreen.SetImageUri(uri);
28                 }
29                 else
30                 {
31                     Debug.WriteLine("设置成功!");
32                 }
33             }
34             catch (Exception ex)
35             {
36                 
37                 Debug.WriteLine(ex.ToString());
38             }
39         }

第四步:更新背景图

 1         private void SwitchImage(string newImage)
 2         {
 3             string fileName;
 4             //获取当前图片URL
 5             Uri currentImage = LockScreen.GetImageUri();
 6 
 7             if (currentImage.ToString().Equals(newImage))
 8             {
 9                 return;
10             }
11             else
12             {
13                 fileName = newImage;
14             }
15 
16            LockHelper(fileName,false);
17         }

官方指导链接:http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj206968(v=vs.105).aspx

posted @ 2012-11-30 16:15  denjuy  阅读(658)  评论(0编辑  收藏  举报