IsolatedStorage에 이미지가 있으며 장치 잠금 화면 배경으로 프로그래밍 방식으로 설정하고 싶습니다. 제 문제는 LockScreen.SetImageUri
에 필요한 올바른 경로를 얻을 수 없다는 것입니다. http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj206968(v=vs.105).aspx을 참조하면``ms-appdata : /// local/''이 로컬 이미지에 필요한 선구자임을 알 수 있습니다.LockScreen.SetImageUri를 사용하여 Windows Phone 8 잠금 화면 배경 설정 방법
var schema = isAppResource ? "ms-appx:///" : "ms-appdata:///Local/";
var uri = new Uri(schema + filePathOfTheImage, UriKind.Absolute);
나는 JPG 이미지가 CameraCaptureTask에서 저장되는 Pictures
라고 IsolatedStorage 내 응용 프로그램에서 폴더를 만들었습니다. 나는 위의 기법을 통해이 폴더 내 이미지에 액세스 할 수있는 몇 가지 방법을 시도했지만 나는 항상 디버깅 할 때
Windows.Phone.System.UserProfile.LockScreen.SetImageUri(uri);
은, 그러나, 나는 uri = "ms-appdata:///Local/Pictures/WP_20130812_001.jpg"
것을 어떻게이 해결되지 않은 참조 다음 회선에 자동 ArgumentException
을받을 수?
private void recent_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
capturedPicture = (sender as LongListSelector).SelectedItem as CapturedPicture;
if (capturedPicture != null)
{
//filename is the name of the image in the IsolatedStorage folder named Pictures
fileName = capturedPicture.FileName;
}
}
void setAsLockScreenMenuItem_Click(object sender, EventArgs e)
{
if (!String.IsNullOrEmpty(fileName))
{
//PictureRepository.IsolatedStoragePath is a string = "Pictures"
//LockHelper("isostore:/" + PictureRepository.IsolatedStoragePath + "/" + fileName, false); //results in FileNotFoundException
LockHelper(PictureRepository.IsolatedStoragePath + "/" + fileName, false); //results in ArgumentException
}
else
{
MessageBoxResult result = MessageBox.Show("You must select an image to set it as your lock screen.", "Notice", MessageBoxButton.OK);
if (result == MessageBoxResult.OK)
{
return;
}
}
}
private async void LockHelper(string filePathOfTheImage, bool isAppResource)
{
try
{
var isProvider = Windows.Phone.System.UserProfile.LockScreenManager.IsProvidedByCurrentApplication;
if (!isProvider)
{
// If you're not the provider, this call will prompt the user for permission.
// Calling RequestAccessAsync from a background agent is not allowed.
var op = await Windows.Phone.System.UserProfile.LockScreenManager.RequestAccessAsync();
// Only do further work if the access was granted.
isProvider = op == Windows.Phone.System.UserProfile.LockScreenRequestResult.Granted;
}
if (isProvider)
{
// At this stage, the app is the active lock screen background provider.
// The following code example shows the new URI schema.
// ms-appdata points to the root of the local app data folder.
// ms-appx points to the Local app install folder, to reference resources bundled in the XAP package.
var schema = isAppResource ? "ms-appx:///" : "ms-appdata:///Local/";
var uri = new Uri(schema + filePathOfTheImage, UriKind.Absolute);
// Set the lock screen background image.
Windows.Phone.System.UserProfile.LockScreen.SetImageUri(uri);
// Get the URI of the lock screen background image.
var currentImage = Windows.Phone.System.UserProfile.LockScreen.GetImageUri();
System.Diagnostics.Debug.WriteLine("The new lock screen background image is set to {0}", currentImage.ToString());
}
else
{
MessageBox.Show("You said no, so I can't update your background.");
}
}
catch (System.Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.ToString());
}
}
가 어떻게 적절한 예상 URI에 LockScreen.SetImageUri
을 수정할 수는 다음과 같이
내 구현은?
감사합니다. 이미 완료했습니다. – Matthew
내가 배치,주의 내' ... '너무 ' <확장 ExtensionName 서 = "LockScreen_Background"ConsumerID = 같은 폐쇄'Token' 태그에서 "{111DFF24-AA15-4A96-8006-2BFF8122084F}" TaskID = "_ default"/> –
Matthew