Open ZIP file in Silverlight - Windows Phone 7 Software Development

Hi,
I'm working on my first application for Windows Phone. I got a ZIP file which contains a huge amount of XML files and which has to be
updated through the app. So I declared the 'Build Action' of the file to 'Content'. Now I'm stuck opening the file for reading and extracting
a stream for a specific XML file.
I tried File.OpenRead but Visual Studio Express crashes when trying to debug this.
Do I need to use Application.GetResourceStream? If yes, can someone post a working example with a content ZIP file (not resource).
Can anyone help me?
Thank you,
toolsche

Try http://senssoft.com/ZipTest.zip
I've created that example project for Freda's developer.

Hi,
Unfortunately that doesn't help me.
1) U did set the file as "Resource" => it will not be updateable because it's within the assembly. If I'm wrong, please tell me...
2) U used an external library (SharpZipLib) which I hope it wouldn't be necessary.

1) I've used an embedded file (actually, epub == zip) to simplify the solution. It's just an example. U may copy the resource file to IsolatedStorageFile / download it from web/ whatever you want. I can't teach you how to use Silverlight for WP7 - buy some good book...
2) SharpZipLib IS NECESSARY! Other "zippers" looks like not a 100% compatible with WinZip/linux zippers (see Freda corresponding topic). SharpZipLib did the job very well.
Of course it up to you: what you want to use. But I gave you a 100% working and tested solution.

Hi,
I'm not in doubt that your solution is working and I thank you for your suggestion.
Maybe I'm on the wrong path, but what I think I need is a solution for opening
a zip file that is NOT part of the assembly (which I think it is if you declare it as
embedded resource).
My intention is to load one or more zip files from a server which the application
should be able parse/remove/replace if outdated. I tried to find a solution but had
no luck so far. MSDN has an example but I couldn't get it to work because I don't
know where the zip file should be located:
http://msdn.microsoft.com/en-us/library/cc190632(v=VS.95).aspx

Try to use IsolatedStorageFile and WebClient, something like this:
Code:
IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication();
WebClient downloader = new WebClient();
downloader.OpenReadCompleted += delegate(object sender, OpenReadCompletedEventArgs e)
{
if (e.Error == null)
{
using (IsolatedStorageFileStream stream = new IsolatedStorageFileStream("myfile.zip", FileMode.Create, isf))
{
Byte[] buffer = new Byte[e.Result.Length];
e.Result.Read(buffer, 0, buffer.Length);
stream.Write(buffer, 0, buffer.Length);
}
DoSomethingWithZip("myfile.zip");
}
};
downloader.OpenReadAsync(new Uri("http://mysite.com/archive.zip", null));

Thank you for the quick answer. I will try it as soon as possible and post the results.
EDIT: Thanks, it's working as suggested.

Related

[PC-APP] RecModFolder - fast module to file conversion

01/04/2010 update - program can read list of modules from text file.
download link: http://www.4shared.com/file/255038195/c2b5de9b/RecModFolder_04.html
mirror: http://narod.ru/disk/19297102000/RecModFolder_04.zip.html
how to use
1. create text file RecModFolder.txt,
2. write list of modules to this file, for example:
SYS\MediaOS\wmpocx.dll
SYS\OS\dw.exe
SYS\OS\dwui.dll
SYS\OS\DwXfer.dll
3. pass RecModFolder.txt as a parameter:
RecModFolder.exe RecModFolder.txt
that's it.
and, of course, you can convert all modules in folder like this
RecModFolder.exe SYS\AdobeFlash
RecModFolder.exe SYS\AdobeFlashCodecs
there are sample RecModFolder.txt and cmd file that I use with OSBuilder
cmd file is executed from the root of my kitchen, program is in the tools\RecMod subfolder
====================================================
old post:
I developed small tool which helps me to update my kitchen with new OS build.
My device has wm6.1 kernel and I get tired with "too many modules" problem.
I know I can use RecMod to convert modules to files, but it's so slow and inconvenient:
find folder with module,
drop it on recmod.exe,
get new file out of this folder,
delete folder,
move file back,
find, drop, get, delete, move...
find, drop, get, delete, move...
GRRR!!!! =)
My tool will do all these steps for me.
I just select parameters:
1. Folder - folder with modules, for example SYS\21872,
2. Mask (optional) - any mask that is valid in windows is acceptable,
(common masks are *.dll, *.cpl, *.exe, *.mui), no mask means "*".
3. Count (optional) - how many modules to convert, no count means "convert all".
[new in v0.3] If Count is 0, program will only display all modules matching the mask,
and do not change your files.
=======================================
Example 1:
>RecModFolder.exe c:\xda\v1\SYS\21054
means - RecMod all modules in c:\xda\v1\SYS\21054 recursive
=======================================
Example 2:
>RecModFolder.exe c:\xda\v1\SYS\21054 *.exe
means - RecMod all exe modules in c:\xda\v1\SYS\21054 recursive
=======================================
Example 3:
>RecModFolder.exe c:\xda\v1\SYS\21054 *.dll 10
means - RecMod first 10 dll modules in c:\xda\v1\SYS\21054 recursive
=======================================
Algorithm
Code:
read parameters from command line
find all modules in given folder (recursive) using given mask
for each module folder
{
call RecMod
create temporary unique file name (GUID for safety reason)
move new file to parent folder and assign it temporary name
delete module folder (with all files)
rename new file, give it real module name
if (count >= requested count)
{
stop
}
}
=======================================
Installation
make sure you can run RecMod from console, add its folder to PATH or drop RecModFolder.exe to the same folder.
That's it.
=======================================
Tips
You can create shortcut to RecModFolder and drop folders on it from explorer or Total Commander. RecModFolder will convert all modules in that folder to files.
Backup your files. This tool doesn't ask any questions,
it just informs you in case of error and stops immediately.
Save log file and check it for errors.
This is console application - you can use it in bat files.
You can save output of this program to text file - add >fileName.txt to your command line.
example:
RecModFolder.exe c:\xda\v1\SYS\21054 *.dll 10 >log.txt
this command will call RecMod first 10 dll modules in c:\xda\v1\SYS\21054 recursive
and save its output to log.txt.
Do not open folders you want to delete (replace with files) in explorer (or Total Commander, FAR, etc.) while this program works.
very nice, but there is already a similar app which does it from right click menu..
see here -> recmod by OndraSter
you probably have more options on the whole process, but the other tool might be more convenient.. anyways i will try
serfer222, you know that you may be responsible for whole lots of nab made VERY bad rom releases now, lol?
hheh, thanks for that tool anyway.
nosedive said:
very nice, but there is already a similar app which does it from right click menu..
see here -> recmod by OndraSter
you probably have more options on the whole process, but the other tool might be more convenient.. anyways i will try
Click to expand...
Click to collapse
I can explain what is the main difference:
If I choose one module folder, for example
Code:
SYS\21055\SHARED\COMMON\BROWSING\browser.dll\
and select osRecmod "Recmod this folder" it will work.
but if I select parent folder
Code:
SYS\21055\SHARED\COMMON\BROWSING\
osRecmod will just delete this folder and create empty file BROWSING
in the SYS\21055\SHARED\COMMON\
So, you see, it doesn't work for me.
I want to convert all modules inside folder
Code:
SYS\21055\SHARED\COMMON\BROWSING\
in one step. I drag this folder on my tool and all modules are converted to files. That's what I want =)
pupakota said:
serfer222, you know that you may be responsible for whole lots of nab made VERY bad rom releases now, lol?
Click to expand...
Click to collapse
You know, there are a lot of such rom developers already here.
This tool will just save their time and maybe they will find out whole new world outside computer and then will quit rom development... =)
Thank you serfer222 for this application, which complements my kitchen.
By
New version - v0.3.
new option is added - if you set Count to 0 program will just display list of matching modules.
Example: I want to see a list of *.mui module folders that can be converted to files.
Command: >RecModFolder.exe d:\mega2\SYS\21874\ *.mui 0
Output:
Code:
d:\mega2\SYS\21874\SHARED\0409\AdobeFlash_LANG_0409\flashresource.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Autoupdate_Lang_0409\AutoUpdateRes_wpc.exe.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Base_Lang_0409\commctrl.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Base_Lang_0409\commdlg.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Base_Lang_0409\coredll.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Base_Lang_0409\coreres.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Base_Lang_0409\crypt32.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Base_Lang_0409\fatutil.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Base_Lang_0409\filesys.exe.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Base_Lang_0409\gwes.exe.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Base_Lang_0409\ieceext.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Base_Lang_0409\jscript.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Base_Lang_0409\miscres.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Base_Lang_0409\netmui.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Base_Lang_0409\notify.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Base_Lang_0409\OutlookLiveUpdaterResources.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Base_Lang_0409\outres.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Base_Lang_0409\quartz.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Base_Lang_0409\shellres.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Base_Lang_0409\shellresapps.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Base_Lang_0409\syncres.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Base_Lang_0409\tapres.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Base_Lang_0409\tshres.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Base_Lang_0409\unimodem.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Base_Lang_0409\waveapi.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Base_Lang_0409\wsp.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Browsing_Lang_0409\browsres.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Browsing_Lang_0409\mlang.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Browsing_Lang_0409\shdoclc.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Browsing_Lang_0409\shlwapi.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Browsing_Lang_0409\urlmon.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Browsing_Lang_0409\wininet.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\CHome_Lang_0409\cmhomeres.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Entertainment_Lang_0409\bbcbres.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Fwupdate_Lang_0409\MdsRes_wpc.exe.0409.mui
d:\mega2\SYS\21874\SHARED\0409\IPSECVPN_Lang_0409\ipsecvpnres.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Skybox_Lang_0409\MyPhoneConsole.exe.0409.mui
d:\mega2\SYS\21874\SHARED\0409\WMWidgets_LANG_0409\riahostres.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\WMWidgets_LANG_0409\wmwidgetinstallerres.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0419\AdobeFlash_LANG_0419\flashresource.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Autoupdate_Lang_0419\AutoUpdateRes_wpc.exe.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Base_Lang_0419\commctrl.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Base_Lang_0419\commdlg.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Base_Lang_0419\coredll.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Base_Lang_0419\coreres.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Base_Lang_0419\crypt32.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Base_Lang_0419\fatutil.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Base_Lang_0419\filesys.exe.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Base_Lang_0419\gwes.exe.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Base_Lang_0419\ieceext.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Base_Lang_0419\jscript.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Base_Lang_0419\miscres.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Base_Lang_0419\netmui.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Base_Lang_0419\notify.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Base_Lang_0419\OutlookLiveUpdaterResources.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Base_Lang_0419\outres.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Base_Lang_0419\quartz.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Base_Lang_0419\riresdll.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Base_Lang_0419\shellres.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Base_Lang_0419\shellresapps.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Base_Lang_0419\syncres.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Base_Lang_0419\tapres.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Base_Lang_0419\tshres.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Base_Lang_0419\unimodem.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Base_Lang_0419\waveapi.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Base_Lang_0419\wsp.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Browsing_Lang_0419\browsres.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Browsing_Lang_0419\mlang.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Browsing_Lang_0419\msscript.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Browsing_Lang_0419\shdoclc.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Browsing_Lang_0419\shlwapi.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Browsing_Lang_0419\urlmon.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Browsing_Lang_0419\wininet.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\CHome_Lang_0419\cmhomeres.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Entertainment_Lang_0419\bbcbres.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Fwupdate_Lang_0419\MdsRes_wpc.exe.0419.mui
d:\mega2\SYS\21874\SHARED\0419\IPSECVPN_Lang_0419\ipsecvpnres.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\MediaOS_Lang_0419\wmploc.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\RemoteDesktopMobile_Lang_0419\wpctsc.exe.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Skybox_Lang_0419\MyPhoneConsole.exe.0419.mui
d:\mega2\SYS\21874\SHARED\0419\WindowsLive_Lang_0419\WLMContactsResources.dll.0419.MUI
d:\mega2\SYS\21874\SHARED\0419\WindowsLive_Lang_0419\WLMDeckResources.dll.0419.MUI
d:\mega2\SYS\21874\SHARED\0419\WindowsLive_Lang_0419\WLMHSContainerResources.dll.0419.MUI
d:\mega2\SYS\21874\SHARED\0419\WindowsLive_Lang_0419\WLMHSMailResources.dll.0419.MUI
d:\mega2\SYS\21874\SHARED\0419\WindowsLive_Lang_0419\WLMHSMeResources.dll.0419.MUI
d:\mega2\SYS\21874\SHARED\0419\WindowsLive_Lang_0419\WLMHSMessengerResources.dll.0419.MUI
d:\mega2\SYS\21874\SHARED\0419\WindowsLive_Lang_0419\WLMHSSearchBarResources.dll.0419.MUI
d:\mega2\SYS\21874\SHARED\0419\WindowsLive_Lang_0419\WLMHSSplashResources.dll.0419.MUI
d:\mega2\SYS\21874\SHARED\0419\WindowsLive_Lang_0419\WLMHSSyncResources.dll.0419.MUI
d:\mega2\SYS\21874\SHARED\0419\WindowsLive_Lang_0419\WLMMailResources.dll.0419.MUI
d:\mega2\SYS\21874\SHARED\0419\WindowsLive_Lang_0419\WLMMessengerResources.dll.0419.MUI
d:\mega2\SYS\21874\SHARED\0419\WindowsLive_Lang_0419\WLMServiceResources.dll.0419.MUI
d:\mega2\SYS\21874\SHARED\0419\WindowsLive_Lang_0419\WLMSharedResources.dll.0419.MUI
d:\mega2\SYS\21874\SHARED\0419\WindowsLive_Lang_0419\WLMSpacesResources.dll.0419.MUI
d:\mega2\SYS\21874\SHARED\0419\WindowsLive_Lang_0419\WLMSyncResources.dll.0419.MUI
d:\mega2\SYS\21874\SHARED\0419\WMWidgets_LANG_0419\riahostres.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\WMWidgets_LANG_0419\wmwidgetinstallerres.dll.0419.mui
97 modules found.
download it from the first post.
have fun =)
keep on
good job man
I have an idea for next update.
Now I'm using 21874 with my wm6.1 kernel and just simple update it to 21876 is a headache. This tool helps me to convert modules fast, but I still must choose what should be converted. I'm lazyyyy. I did it for 21874 and want to REUSE my old work.
Idea is:
1. run application and choose good existing build AS TEMPLATE.
2. select new build folder and drink a cup of coffee.
3. my app will do the job - take old working build as template and prepare new build exactly the same way.
What do you think? Is there a program that already implement this feature or
I need to create it? (lazy question)
=)
When I start doing recmod the recmodefolder.exe shows this message "Do you have RecMod.exe in PATH?" and then stops.
What happens?
program is updated, list-mode added,
first post is updated
hi, friends, it seems an excerllent apps, but how can i download it? when i visit that link, it seems a Russian web, i even don't know one letter!
can you upload it rapishare ?
www.4shared.com link in the first post
useful App ,, Thanks
when selecting or specifying 1 module folder, it doesen't work for me.
It shows "RecMod 0 modules completed"
It works only using multiple (eg: *.mui).
Maybe the first prob. will be replaced by osrecmod, & ur tool for multiple files ,, LoL
------------
ANY idea of converting back file to module?
-Yasser-

[Q][SOLVED] PhotoChooserTask Mango Exception

A simple photochooser task application throws a Nullrefference exception(Invalid pointer) and pixel height and width is 0 on mango, on nodo it worked alright.
Am I missing a cast? or this is a bug in mango, and will be fixed?
Here's the code:
Code:
private PhotoChooserTask photo;
// Constructor
public MainPage()
{
InitializeComponent();
photo = new PhotoChooserTask();
photo.Completed += new EventHandler<PhotoResult>(photo_Completed);
}
void photo_Completed(object sender, PhotoResult e)
{
if (e.TaskResult == TaskResult.OK)
{
BitmapImage bi = new BitmapImage();
bi.SetSource(e.ChosenPhoto);
//////////////////////////////////////////////////////////////////////////////////////
var wb = new WriteableBitmap(bi);//Exception here
/////////////////////////////////////////////////////////////////////////////////////
// bi.PixelHeight and bi.PixelWidth == 0;
}
}
private void button1_Click(object sender, RoutedEventArgs e)
{
photo.Show();
}
}
Hope someone can help.
Thanks in advance
This is because you need to set the CreateOptions property of the BitmapImage before you use it to construct the WriteableBitmap.
The default 'create' option on WP7 is DelayCreation (it may be BackgroundCreation in some of the 7.1 betas, but the mango RTM I think is DelayCreation) but either way the problem you're having is that your image has not been initialised yet at the point you use it in the WriteableBitmap's constructor (hence the null reference exception).
The options (depending what you set) let images be only initialised when needed, and downloaded on separate threads / asynchronously, which can help performance (or at least stop the phone blocking other things happening whilst images are loaded). Users also have the ability with the photo chooser to pick images from online ablums, so as you can imagine you also have to handle perhaps a second or two waiting for a download to complete, and of course downloads can also fail when connections drop etc. which you can handle too.
So in answer to your question (off the top of my head, not confirmed it with code) set the createoptions to none, and use the Bitmap's ImageOpened event to construct the WritableBitmap (you may also want to handle the Bitmap's ImageFailed event). Make sure you set up the ImageOpened event before you set the source, i.e.
BitmapImage bi = new BitmapImage();
bi.CreateOptions = BitmapCreateOptions.None;
bi.ImageOpened += new (some event name)
bi.ImageFailed += new (some event name)
bi.SetSource(e.ChosenPhoto);
Hope that helps,
Ian
Thank you very much
Problem solved
otherworld said:
This is because you need to set the CreateOptions property of the BitmapImage before you use it to construct the WriteableBitmap.
The default 'create' option on WP7 is DelayCreation (it may be BackgroundCreation in some of the 7.1 betas, but the mango RTM I think is DelayCreation) but either way the problem you're having is that your image has not been initialised yet at the point you use it in the WriteableBitmap's constructor (hence the null reference exception).
The options (depending what you set) let images be only initialised when needed, and downloaded on separate threads / asynchronously, which can help performance (or at least stop the phone blocking other things happening whilst images are loaded). Users also have the ability with the photo chooser to pick images from online ablums, so as you can imagine you also have to handle perhaps a second or two waiting for a download to complete, and of course downloads can also fail when connections drop etc. which you can handle too.
So in answer to your question (off the top of my head, not confirmed it with code) set the createoptions to none, and use the Bitmap's ImageOpened event to construct the WritableBitmap (you may also want to handle the Bitmap's ImageFailed event). Make sure you set up the ImageOpened event before you set the source, i.e.
BitmapImage bi = new BitmapImage();
bi.CreateOptions = BitmapCreateOptions.None;
bi.ImageOpened += new (some event name)
bi.ImageFailed += new (some event name)
bi.SetSource(e.ChosenPhoto);
Hope that helps,
Ian
Click to expand...
Click to collapse
Hello, I have the same problem (NullReferenceException) and have read you response, which from what I see it is the solution, but I have a problem; not where I have to go to do I change them that you propose. I would be so kind of explaining to me that I have to continue steps. It English me is very bad and I am using a translator.
I have HTC Trophy the v.th 7740.16 with chevrom and U2M7740 of Ansar.
Thank you in advance and greetings.
Hi,
If you upload your code / project I will take a look and see where the error is.
Si me muestras su código / proyecto, puedo ver por qué recibiras una excepción NullReference
Ian
otherworld said:
Hi,
If you upload your code / project I will take a look and see where the error is.
Si me muestras su código / proyecto, puedo ver por qué recibiras una excepción NullReference
Ian
Click to expand...
Click to collapse
Hello,
The question is that it is not any project, applications do not develop (although I would like). This type of errorr (nullreferenceexception) happens to me since I updated to Mango, so much in v.7720.68 as in v.7740.16 and happens in apps as Morfo, Fantasy Painter, and at the time of choosing fund in Touchxperience. Not if these apps are not conditioned to Mango or if, perhaps, from the record it might change some type of configuration or entering the Xaml of the app to be able to change some fact, end not...
For the little that, an error of the photochooser seems to be, the question is if it is possible to gain access to him and as doing it.
Anyhow thank you very much and a cordial greeting.
Hi,
If it is not a code issue then I do not know what it could be. Are you using a custom rom?
Good luck with it.
Ian
otherworld said:
Hi,
If it is not a code issue then I do not know what it could be. Are you using a custom rom?
Good luck with it.
Ian
Click to expand...
Click to collapse
Hello. Not, I am with official Mango the v.th 7740.16. I have already restored to factory and it continues the error. I believe that it is a question of the update, it must have a mistake in the pitcher of photos or some error with the librerie, do not know...
Thank you anyhow and greetings.
Hello, otherworld.
I continue with the same problem, 'nullreferenceexception' related with 'chooserphoto' in some application. The curious thing is that someone of them me work correctly, I gain access to me librery and it takes the photos, and in others not, as for example Morfo. I do not know if the problem is in the code source of these applications or phone is in me. Is this the code source of Morfo, is it possible to correct so that this does not happen?
Thank you in advance and greetings.

[Q] How Can I Make an Object Draggable?

Hello everybody,
Can someone explain me how can I make an object (an Image) draggable by the user in a Windows Phone Silverlight application?
I'm stuck because I don't know how to do this, I've assmued that the AllowDrop propery It's what I need...
Can you help me?
Thank you
There are lot of ways to implement... Simpliest (but not an optimal) way is: drop image to main page, attach these handlers to the image and LayoutRoot.
You should understand idea but your implementation may differ (and better)
Code:
private void image1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
this.image1.RenderTransform = new TranslateTransform();
}
private void image1_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
this.image1.RenderTransform = null;
}
private void LayoutRoot_MouseMove(object sender, MouseEventArgs e)
{
TranslateTransform t = this.image1.RenderTransform as TranslateTransform;
if (t != null)
{
Point pt = e.GetPosition(this);
t.X = pt.X - (image1.Width / 2);
t.Y = pt.Y - (image1.Height / 2);
}
}
Thank you for the reply!
The code works, but the image is draggable even if I tap somewhere else, how can I make it draggable by only clicking the image?
Thank you again
EDIT: The TranslateTransform is a specific kind of render transformation. Rather that changing properties of the control (such as the Margin property), it simply affects how the control is displayed on the screen.
I need something that actually changes the image margins...
As for first question: attach MouseLeftButtonDown & MouseLeftButtonUp to image, not to the layout root (grid).
For second one: why do you need to change image margins? What's the reason? What are you trying to do?
P.S. Of course you can change margins instead TranslateTransform but I'm not sure is it GPU powered...
MouseLeftButtonDown & MouseLeftButtonUp are already attached to the image... Did you mean MouseMove? I tried to put all the three events on the image, but It doesn't work, I don't have the drag effect :\
I need this for a simple game
This is what I have to do:
1) A level where I don't need to change margins: You have to touch an image which is behind another one, so you have to drage the first image away to touch the second.
2) A level where I need to change margins: You have to complete a puzzle. You have a puzzle with a missing piece on the left and 4 pieces on the right. You have to take the right missing piece and drag it to the empty place in the puzzle. I wanted to so something like "if the block is in a specific range of margins(because it's too difficult to release the image exactly where It should go), then verify it it's the correct one".
Sorry but seems like you need to study game programming basics first. All tasks you've described are very simple but you need (at least) understand what are you doing...
I gave you an idea how to move image (but there are a lot (not, A LOT) of different ways). So you only need to:
- start "dragging" image by changing TranslateTransform coordinates;
- on each change you should check image bounds (it's e.GetPosition(this).X, e.GetPosition(this).Y, e.GetPosition(this).X + image1.Width, e.GetPosition(this).Y + image1.Height) intersection with your placeholder and "fix" image (just do not process MouseMove) . That's all.
If you still don't get it, try good book first.

ISETool.exe bug

Today I found very annoying and strange bug (or, may be, MS call it "feature" ). Seems like directories on isf can hold 1024 files only...
Try code below:
Code:
Random rnd = new Random();
using (var isf = IsolatedStorageFile.GetUserStoreForApplication())
{
byte[] data = new byte[1024];
isf.CreateDirectory("test");
for (int i=0; i<1025; i++)
{
string fileName = "test\\" + i.ToString("D4") + ".bin";
using (IsolatedStorageFileStream fs = new IsolatedStorageFileStream(fileName, FileMode.Create, isf))
{
rnd.NextBytes(data);
fs.Write(data, 0, data.Length);
}
}
}
After loop completed, resulting directory "test" will be empty! But change i<1024 and you'll get all yours 1024 files...
Tested on emulator and HTC Surround, same results. Can't find any documentation about this limitation... Shame on you, MS!
Update: another strange behavior ('cause of this bug) - if you already have 1024 files and try to add one more, the whole directory content is "magically" disappear But exception isn't thrown...
Interesting, I'll try it as well. This would be lame to have to work around.
Dbeattie said:
Interesting, I'll try it as well.
Click to expand...
Click to collapse
Yes, please, confirm...
I can't test this at the moment but I know I write well over 1000 files to /shared/media so I'm curious to tet this.
sensboston said:
Yes, please, confirm...
Click to expand...
Click to collapse
Hey just tried it out, wrote 2k items to a folder called "Data".
While it didn't show up in the Windows Phone Power tools, the file does exist in the folder itself.
bool success = storage.FileExists(Path.Combine("data", "1999"));
So it's either a problem with the WPConnect api or with the power tools, haven't tried the command line tool.
Yep, fortunately you are right, it's a ISETool.exe (or drivers) bug, not a WP7 ISF.
sensboston said:
Yep, fortunately you are right, it's a ISETool.exe (or drivers) bug, not a WP7 ISF.
Click to expand...
Click to collapse
Could you therefore edit the title of the thread please?
Thanks.

[dev] hook into PhoneStatusBarPolicy

Hello alltogether,
I digged into the Lollipop code to look for a solution to restore the old Kitkat silent mode in Lollipop with Xposed.
I got a working prototype now but would like to add the silentmode icon back to the statusbar.
Unfortunately it got removed in Lollipop so I have to port it forward from an older ROM.
To do that I need to hook into the PhoneStatusBarPolicy class, which for some reason fails.
This is my code:
Code:
private static final String CLASS_PHONE_STATUSBAR_POLICY = "com.android.systemui.statusbar.phone.PhoneStatusBarPolicy$1";
public void handleLoadPackage(final LoadPackageParam lpparam) throws Throwable {
if (lpparam.packageName != "android")
return;
final Class<?> classStatusbarPolicy = XposedHelpers.findClass(CLASS_PHONE_STATUSBAR_POLICY, lpparam.classLoader);
XposedHelpers.findAndHookMethod(classStatusbarPolicy, "updateVolumeZen",
new XC_MethodReplacement() {
...
});
}
}
But for some reason it fails:
Code:
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.android.systemui.statusbar.phone.PhoneStatusBarPolicy" on path: DexPathList[[zip file "/system/framework/services.jar", zip file "/system/framework/ethernet-service.jar", zip file "/system/framework/wifi-service.jar"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
Does anyone have an idea?
Thanks!
You should change lpparam.packageName != "android"
to
lpparam.packageName.equals("android")
Why android? This class is within com.android.systemui package.
C3C076 said:
Why android? This class is within com.android.systemui package.
Click to expand...
Click to collapse
Ah I guess I misread rovos post about the new API with the dummy android package.
In detail, this means: If you want to hook a system service like PackageManagerService, you can no longer do that in initZygote(). Instead, move your code to handleLoadPackage() and check for dummy package "android". Make sure you use lpparam.classLoaders when looking for classes and hooking methods. This way has worked in older Android versions as well, so you don't lose backwards-compatiblity.
Click to expand...
Click to collapse
After reading it again this just applies to system services. And based on some code I saw at your Gravitybox repo it doesn't even seem to apply to all system services as you are still hooking a couple during initZygote
Xposed is new to me, but it's an amazing toolset!
So hooking works fine now, unfortunately it just got a bit ugly as the StatusBarManager which I'd like to use for the icons can't get imported. I guess I'll have to use some reflection to get into the class hehe.

Categories

Resources