Titanium Windows Phone: How can i save a file in visible folders? - windows-phone-8.1

I'm developing a windows phone application built with Titanium SDK 5.2.2.
I'm not able to save a file in directories directly accessible by the device (like Downloads directory).
I tried to use the only supported functionalities of Titanium API Titanium.Filesystem.getFile and Titanium.Filesystem.File.write, but the only way to save the file is to use Ti.FileSystem.applicationDataDirectory or Ti.File.resourcesDirectory to decide the path where store it.
It seems that, using these API, I cannot store file in one of the directories visible by the device(Documents, Downloads, Photos, Music), and then make them available inside the device.
Can I perform this download in the path visible to the device such as Downloads folder?

You might be able to use the externalStorageDirectory location:
https://github.com/appcelerator/titanium_mobile_windows/blob/e3ecddfe13179509e3b8d0699141763262ef5a97/Source/Filesystem/src/Filesystem.cpp#L81
We've had a similar request to expose the Downloads/Documents folder for iOS. I'd suggest to add a comment to request parity for Windows or create a new ticket:
https://jira.appcelerator.org/browse/TIMOB-23197

I opened an issue on Appcelerator JIRA for this question:
https://jira.appcelerator.org/browse/AC-3615 .

Related

PhoneGap store HTML Files on Device

I have to build an App for Windows Mobile and iOS. So I decided to create this with PhoneGap.
The app should only display HTML-Files.
These files are stored on a server and can change every day.
So I created already an API which delivers the files.
My solution would be:
In my PhoneGap-App I use AJAX to get the files (this is no problem and should already work...).
To the question:
How can I store the files on the device? Is this possible with PhoneGap?
The app have to work offline too (because of this I need to store the files)...
And if this is possible: It should sync only the differences (between device/app and server) --> keyword rsync??
Thank you for your help!
Emanuel :)
Have you checked here?
You can definitely store files locally on android platform.(I have already done that). However, I haven't done it on IOS.
So please investigate, if features I gave the link above, available for safari (IOS).
Synching only diff should be implemented on the server side and should be responsibility of your API.
Yes you can store files locally.
I would recommend the Phonegap File Transfer plugin for downloading files. It supports iOS and Windows phone 7 and 8 and can download and save the file locally. At the Cordova file plugin github you can see the paths where you can save the files for iOS, I haven't found a table for windows phone yet.
But I would not recommend you download the HTML files since they can be very big. You should dynamically create the mobile pages you need, since you would only need to download the displayed text and attributes for some HTML-tags.
The way you can do this is by having a server back-end where you can change the content of the pages. The plain HTML should then be saved in a database with a creation and modification timestamp(needed to check if you have the latest updates). You would then pull the data out of the database with your PHP and echo it as a JSON. Your app just has to make a AJAX-GET request to the server and save the data locally in a database. I would recommend the Cordova SQLite Storage plugin for the local database. Whenever a page is opened you should dynamically create a mobile page.
This way your app doesn't request huge amount of data from a server, which can be more appealing to your app users.

OneDrive not available in FilePicker

I am playing alittle with windows phone 8.1 app creating. Using C# and phone emulator in VS2013. I have read on microsoft's page that i should be able to see OneDrive in standard file picker (msdn.microsoft.com/en-US/en-en/library/windows/apps/dn263258.aspx):
Use the built-in Windows features.
Whenever possible, use the Windows features and UI to host or interact
with OneDrive. For instance, use the file picker provided by the
Windows.Storage.Pickers namespace for opening and saving files. As
another example, have your app use the Windows application data APIs
to save smaller pieces of data across a user's devices.
I am using standard code from tutorial like:
openPicker.FileTypeFilter.Add("*");
StorageFile file = await openPicker.PickSingleFileAsync();
and it works but there is no OneDrive to choose. I have internet connection on emulated device and i am logged in to OneDrive.
Have you integrated your file picker with the OneDrive contract?: http://msdn.microsoft.com/en-us/library/windows/apps/hh465192.aspx
You can also use the Live SDK single sign-on feature for Windows Phone here: http://msdn.microsoft.com/en-us/library/dn631823.aspx This way, your app should work for your testing purposes because you are already signed in.
I hope this helps!

how to download audio file from from uri and save in local folder in windows phone 8?

I've got various types of ringtone in my server. I need to know how to read those audio files and save into my Windows Phone 8 directory.
How large are the files? The BackgroundTransferRequest API is one way you could download files. It is especially useful for larger files. Since this class downloads in the background it is nice in that you can navigate around your app and even leave it without having to cancel your download.
It also has some built-in functionality that will help limit downloads when you are on wireless vs wifi so your app won't accidentally eat up your user's data plan.
Here's some info on Background file transfers:
http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh202955%28v=vs.105%29.aspx
http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh202959%28v=vs.105%29.aspx
An alternative is using an Http request using either the HttpWebRequest or WebClient classes. These options are good when you have smaller files and when you know you have a stable network connection. They will also work with larger files but they don't have the extra features that BackgroundTransfer API has for longer running downloads.
http://developer.nokia.com/community/wiki/Making_a_HTTP_request_and_listening_its_completion_in_Windows_Phone

Where can I find files saved in ApplicationData.Current.LocalFolder while developing a Windows Phone 8.1 app?

To my understanding, WinRT apps store their application data in
C:\Users\{user}\AppData\Local\Packages
My Windows Phone 8.1 application seems to have its own folder there as well, with an odd name like
App.aba911777.a60e8.a46c0.aa90d.a5038d92d276e_8wekyb3d8bbwe
However, when I browse the directory, I cannot find any of the files I've saved to ApplicationData.Current.LocalFolder. They are definitely there, because if I re-run my app in the emulator (which hasn't been closed at all), can find the cached files. Presumably these files are saved somewhere on my actual hard drive; where would they be?
(LocalFolder.Path gives me C:\Data\Users\DefApps\APPDATA\Local\Packages\2cdc8aaf-b7fe-4bcb-992a-18ad6f140771_b83k3kj2dpxdw\LocalState but I'm not sure how to find that on my hard drive)
To transfer/access files on Windows Phone Emulator (also works with device) you can use:
Isolated Storage Explorer tool - here is a good link how to do it, and also one useful here.
a very nice tool is Isolated Storage Spy - which now supports also WP8.1
Windows Phone Power Tools from here - you will have to check if that already works with WP8.1.
Search your SQLite db file in "C:\Users\\AppData\Local\Packages\".
localFolder.Path gives you correct location. You are not able to find that folder because AppData is been hidden. Please change your PC settings to view this folder.
Thanks

Sharing files between metro and desktop app

I have a desktop app which creates files under c:\ProgramData folder on windows 7. (I can't move the files location to document folder.) I want to provide a metro version of this application as well. The metro application should be able to read and write the same files which are created by the desktop version. As I see, metro does not allow this in some obvious way. Is there a way to make that folder available to metro app?
Metro applications can't access most of the windows desktop folders. C:\ProgramData is not one of the allowed locations. See here for a list of the allowed locations and how to get to them.
You can add possibility to 'send' your data to your desktop app from WinRT app. Try to use sharing contract (check there and there ) for this. I understand that isn't well solution for this but it is better than nothing.
EDIT: This way isn't possible. I've just checked and get message - Nothing can be shared from desktop.