[XAP] [Source] IE Search Switcher 1.3.2

Search This thread

GoodDayToDie

Inactive Recognized Developer
Jan 20, 2011
6,066
2,933
Seattle
Tuesday 4 April:
It looks like Samsung support is still broken. Feel free to continue testing and reporting any issues, but it looks like I'll need to try a few different things. HTC and LG still work, of course.

UPDATE 1.3.2 - Saturday 2 April:
I've added some more checks to the registry write code. If you're not sure if the app is working for you (i.e. Samsung device owners) please try it and report what happens when you switch search options, or install a new option. If you get a messagebox indicating success, you're good to go. If it indicates failure, please tell me what the message was. Also, if it indicates failure the first time, try hitting Save again, and see if you get the same result.

UPDATE 1.3.1 - Saturday 2 April:
There may have been a bug in the way I was implementing registry access via the RIL Client COM control. Based on comparisons with some code known to work, I think this bersion might actually do it. This is of course untested - I don't have a Samsung device handy - but it may actually work. If not, PLEASE let me know what happens!

Also, this app officially *does* work on HTC phones using NoDo. I don't expect NoDo to break anything, but if it used to work and now doesn't, please let me know whether you've updated since it last worked.

Sorry for the long delay between versions. I've been working on something extremely exciting: an app to allow people to back up the important data on their phones (application storage, documents, and other things that don't automatically sync) to a PC, and restore it. I'll put a thread on here when it's ready to publish. In the meantime, if anybody has a way to get filesystem access on anything but HTC phones, *PLEASE* contact me!!

If it works for your Samsung device, PLEASE post a reply saying so! That would be very exciting news. :) If it doesn't, please check the error that appears. If it's the same as in this post, just say so. If not, please post at least the first few lines of the error so I know what happened.


DESCRIPTION:
A tool for quickly changing the search engine used when you hit the hardware Search button from within IE. You can use the search provider that comes configured on your phone, the built-in Bing app, or any other providers you've manually added. You can also add and use the mobile search page from Google, Yahoo, or Bing.

NOTE 1: This app does not change the search app used outside of IE! It only changes what happens when you're in Internet Explorer, and hit the Search button or enter something that isn't a valid URL in the location bar. If anybody figures out how to change Search button behavior anywhere else, please let me know!

NOTE 2: This app can not cause the search button to launch another app, aside from the pre-installed Bing search! It can only open a URL, not an app. I'd like to enable launching other apps, but that's a bigger project than I have time for at the moment.

TO INSTALL:
This app is not in the Marketplace and therefore requires a developer-unlocked device. You can unlock your device if you have a Marketplace account, or with ChevronWP7.
Download the ZIP file at the bottom of this post.
Extract the XAP file under \IESearchSwitcher\Bin\Release\.
Deploy the XAP file to your phone.

TO USE:
From the Applications list, run the "IE Search Switcher" app.
Select the search provider that you want to use from the drop-down.
Press the Save button to change your search provider.
If the provider you want is not listed, hit the Add button to install more options.
In the Add view, select an option from the drop-down and hit Install.
You can hit Refresh to see what provider is currently set.

TO REMOVE:
Press-and-hold on the application in the list, then hit "uninstall".
This will NOT change or reset your IE search option. It will stay as last set until changed again.

Coming features:
  • Samsung support (maybe 1.3.1?)
  • Ability to add your own search providers
  • Ability to edit or delete existing providers
  • Support for Dell and other OEMs (if possible)
  • Ability to launch apps other than Bing when you hit Search (if possible)

Supported devices:
  • HTC HD7: Tested, works
  • HTC, other: Reported working
  • Samsung: May work as of 1.3.1, please test!
  • LG: Reported working as of 1.1.0
  • Dell: Unknown, unlikely to work
  • Other: Unknown, unlikely to work

SAMSUNG USERS: I'm trying to support your phones, but the problem is very confusing. As best I can tell, the technique I've been using has worked successfully in other apps. I'm trying something different for 1.3, so please test it out and let me know what happens!

THIS IS STILL A BETA! If something doesn't work, PLEASE post a comment in this thread with your device, what you were trying to do, and what exception message you got. If there was no exception, just explain what didn't work. THANK YOU!


FOR DEVELOPERS: The full source code for the app is included. I've also added some improvements to the Homebrew library from when I downloaded it. It's from the source for the WebServer project, and is copyright Dave Amenta. If you want to use it to make your own apps, be sure to include the following:
  1. DLLs. Check the ReadMe.txt in the Homebrew project for more info.
  2. WPInteropManifest.xml
  3. The capability ID_CAP_INTEROPSERVICES in WMAppManifest.xml

Version history:
1.3.2 - Added a read check after every write. (2 April 2011)
1.3.1 - Fixed a possible bug in the use of COMRilClient.dll for Samsung registry. (2 April 2011)
1.3.0 - Implemented a different native DLL for Samsung registry access. It may actually work now. (18 Feb 2011)
1.2.1 - Fixed the search included provider URLs for search-from-location-bar. Some library improvements. (17 Feb 2011)
1.2.0 - Added another library used by Samsung and some more library code based on other Samsung projects. (8 Feb 2011)
1.1.2 - Disabled the check for existing search providers with the Add list. You can now re-install Google if you got the bad version 1.1.0. (7 Feb 2011)
1.1.1 - Use http://www.google.com instead of http://m.google.com. (7 Feb 2011)
1.1.0 - Added the ability to install some hard-coded options: Google, Bing, and Yahoo mobile pages. LG now uses ProvisionXML. (7 Feb 2011)
1.0.1 - Fixed cross-platform support. Added necessary dlls and updated ReadMe. (27 Jan 2011)
1.0.0.0 Initial Release (27 Jan 2011)
 

Attachments

  • IESearchSwitcher.zip
    3 MB · Views: 7,225
Last edited:

contable

Senior Member
Oct 25, 2009
1,755
997
Not working on my T-Mobile Germany branded OMNIA 7.

Error: Unable to load provider options !
 

GoodDayToDie

Inactive Recognized Developer
Jan 20, 2011
6,066
2,933
Seattle
Thanks for the reports, folks. Sorry to hear about the non-HD7 problems; the only phones I can physically test on are HD7s. Sounds like registry read on other devices is having issues. Sadly, this doesn't surprise me after the issues I had getting it working at all.

I'll make sure that the necessary libraries are included and that the error messages are as informative as possible (please mention the exception you get, it really helps the debugging). I'll have another version up tonight (Pacific time).
 

GoodDayToDie

Inactive Recognized Developer
Jan 20, 2011
6,066
2,933
Seattle
OK, Samsung and LG support should work for real this time. I was missing a couple of DLLs that are required for native access on those devices. Please try again.

Adding of new search options (Google, Bing, Yahoo, etc.) coming soon. Please feel free to suggest search engine options that you'd like to have built-in to the app. (For example, Baidu perhaps?)
 

GoodDayToDie

Inactive Recognized Developer
Jan 20, 2011
6,066
2,933
Seattle
Ouch... the LG should have worked but I can't really test. An HD2 (running WP7) should be functionally identical to an HD7, which definitely works.

Any chance you guys could describe the error you're getting? I'll need to find somebody with anything other than an HD7 to test on other devices.
 

GoodDayToDie

Inactive Recognized Developer
Jan 20, 2011
6,066
2,933
Seattle
Note that the app won't actually do anything until/unless you hit the Save button on the bottom bar. Just changing the option in the drop-down then pressing Back will have no effect (if that's what you're seeing).
 

Dea-loC

Member
Mar 2, 2007
39
2
Don't work in Samsung Omnia 7.

This is the error at the launch :

Unable to get current provider!
System.OutOfMemoryException:
OutOfMemoryException
à
Homebrow.deviceAPI.Registry.WindowsCERegistry.GetStringValue(Strin root; String path; String name)
à
IESearchSwitcher.RegistryAccess.GetCurrent()
à IESearchSwitch.MainPage.Refresh()
à IESearchSwitch.MainPage.LoadOptions()
à IESearchSwitch.MainPage.Page_Loaded(Object sender, RoutedEventArgs e)
à
System.Windows.CoreInvokeHandler.InvokeEventHandler(Int32 typeIndex, Delegate handlerDelegate, Object sender, Object args)
à MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, String eventName)

That's all ... =)
 
  • Like
Reactions: GoodDayToDie

GoodDayToDie

Inactive Recognized Developer
Jan 20, 2011
6,066
2,933
Seattle
Of all the exceptions I wasn't expecting, OutOfMemeory is the one I was expecting least... ;-) I mean, I'm trying to read the contents of a single string in a single registry value. The program's memory usage should be measured in KB, most likely.

Anyhow, thanks for the info! I'll look into this when I get home tonight.

Oddly enough, this is not in a Samsung-specific API. It's part WindowsCERegistry, which is read-only but should be cross-platform. It's also not the first time that the program calls a registry read function (although it might be the first call to GetStringValue).

Would you be willing to run a XAP with a bunch of extra debugging messages enabled to try and nail down the location of the issue?
 
Last edited:

Hulzer

Senior Member
Dec 7, 2005
188
6
Hi,

tested on Samsung Omnia 7:

1. Changed to bing search
2. Press 'Save' button
3. Application exits at
Code:
SamsungInterop.IHybridInterface_FCRProxy.RegistrySetString()

There's no exception thrown at
Code:
SamsungRegistry.SetStringValue()
 

GoodDayToDie

Inactive Recognized Developer
Jan 20, 2011
6,066
2,933
Seattle
Sorry about the delay folks, it's been a busy weekend. :)

Currently the app only lets you switch between alread-installed providers. In most cases that will be one of either Bing or Google, plus the built-in Bing app (always available).

I'm adding support for putting in more providers. The app will include some pre-defined options (both Google and Bing, probably Yahoo, other suggestions are welcome) and the ability to create your own (maybe you *really* love the Firefox Start page?)

I was planning on nailing cross-device support first, but that's being surprisingly difficult at the moment (I may be able to get Samsung support by incorporating a different library than the one I've been using) so I haven't been focusing on this feature, but the code is halfway written already and could be finished quickly.
 

Aerox912

Senior Member
Jun 21, 2009
332
43
Can only choose between bing app or search.
Doens't find the google app for some reason, it is installed though.
Using Mozart T-Mo Germany 16GB.
 

GoodDayToDie

Inactive Recognized Developer
Jan 20, 2011
6,066
2,933
Seattle
@megaprime: Sorry about the delays, but I'll have an update with the ability to add Google (or other options) soon.

@Aerox: It's not currently possible to have it start a different app, such as Google. It can either start the built-in Bing app, or go to a website (such as m.google.com). As I told megaprime, I'll have an update with the ability to add such sites ASAP.

Also, sounds like it works (so far as it's currently able to) on the HTC Mozart? That's good.
 

Top Liked Posts

  • There are no posts matching your filters.
  • 6
    Tuesday 4 April:
    It looks like Samsung support is still broken. Feel free to continue testing and reporting any issues, but it looks like I'll need to try a few different things. HTC and LG still work, of course.

    UPDATE 1.3.2 - Saturday 2 April:
    I've added some more checks to the registry write code. If you're not sure if the app is working for you (i.e. Samsung device owners) please try it and report what happens when you switch search options, or install a new option. If you get a messagebox indicating success, you're good to go. If it indicates failure, please tell me what the message was. Also, if it indicates failure the first time, try hitting Save again, and see if you get the same result.

    UPDATE 1.3.1 - Saturday 2 April:
    There may have been a bug in the way I was implementing registry access via the RIL Client COM control. Based on comparisons with some code known to work, I think this bersion might actually do it. This is of course untested - I don't have a Samsung device handy - but it may actually work. If not, PLEASE let me know what happens!

    Also, this app officially *does* work on HTC phones using NoDo. I don't expect NoDo to break anything, but if it used to work and now doesn't, please let me know whether you've updated since it last worked.

    Sorry for the long delay between versions. I've been working on something extremely exciting: an app to allow people to back up the important data on their phones (application storage, documents, and other things that don't automatically sync) to a PC, and restore it. I'll put a thread on here when it's ready to publish. In the meantime, if anybody has a way to get filesystem access on anything but HTC phones, *PLEASE* contact me!!

    If it works for your Samsung device, PLEASE post a reply saying so! That would be very exciting news. :) If it doesn't, please check the error that appears. If it's the same as in this post, just say so. If not, please post at least the first few lines of the error so I know what happened.


    DESCRIPTION:
    A tool for quickly changing the search engine used when you hit the hardware Search button from within IE. You can use the search provider that comes configured on your phone, the built-in Bing app, or any other providers you've manually added. You can also add and use the mobile search page from Google, Yahoo, or Bing.

    NOTE 1: This app does not change the search app used outside of IE! It only changes what happens when you're in Internet Explorer, and hit the Search button or enter something that isn't a valid URL in the location bar. If anybody figures out how to change Search button behavior anywhere else, please let me know!

    NOTE 2: This app can not cause the search button to launch another app, aside from the pre-installed Bing search! It can only open a URL, not an app. I'd like to enable launching other apps, but that's a bigger project than I have time for at the moment.

    TO INSTALL:
    This app is not in the Marketplace and therefore requires a developer-unlocked device. You can unlock your device if you have a Marketplace account, or with ChevronWP7.
    Download the ZIP file at the bottom of this post.
    Extract the XAP file under \IESearchSwitcher\Bin\Release\.
    Deploy the XAP file to your phone.

    TO USE:
    From the Applications list, run the "IE Search Switcher" app.
    Select the search provider that you want to use from the drop-down.
    Press the Save button to change your search provider.
    If the provider you want is not listed, hit the Add button to install more options.
    In the Add view, select an option from the drop-down and hit Install.
    You can hit Refresh to see what provider is currently set.

    TO REMOVE:
    Press-and-hold on the application in the list, then hit "uninstall".
    This will NOT change or reset your IE search option. It will stay as last set until changed again.

    Coming features:
    • Samsung support (maybe 1.3.1?)
    • Ability to add your own search providers
    • Ability to edit or delete existing providers
    • Support for Dell and other OEMs (if possible)
    • Ability to launch apps other than Bing when you hit Search (if possible)

    Supported devices:
    • HTC HD7: Tested, works
    • HTC, other: Reported working
    • Samsung: May work as of 1.3.1, please test!
    • LG: Reported working as of 1.1.0
    • Dell: Unknown, unlikely to work
    • Other: Unknown, unlikely to work

    SAMSUNG USERS: I'm trying to support your phones, but the problem is very confusing. As best I can tell, the technique I've been using has worked successfully in other apps. I'm trying something different for 1.3, so please test it out and let me know what happens!

    THIS IS STILL A BETA! If something doesn't work, PLEASE post a comment in this thread with your device, what you were trying to do, and what exception message you got. If there was no exception, just explain what didn't work. THANK YOU!


    FOR DEVELOPERS: The full source code for the app is included. I've also added some improvements to the Homebrew library from when I downloaded it. It's from the source for the WebServer project, and is copyright Dave Amenta. If you want to use it to make your own apps, be sure to include the following:
    1. DLLs. Check the ReadMe.txt in the Homebrew project for more info.
    2. WPInteropManifest.xml
    3. The capability ID_CAP_INTEROPSERVICES in WMAppManifest.xml

    Version history:
    1.3.2 - Added a read check after every write. (2 April 2011)
    1.3.1 - Fixed a possible bug in the use of COMRilClient.dll for Samsung registry. (2 April 2011)
    1.3.0 - Implemented a different native DLL for Samsung registry access. It may actually work now. (18 Feb 2011)
    1.2.1 - Fixed the search included provider URLs for search-from-location-bar. Some library improvements. (17 Feb 2011)
    1.2.0 - Added another library used by Samsung and some more library code based on other Samsung projects. (8 Feb 2011)
    1.1.2 - Disabled the check for existing search providers with the Add list. You can now re-install Google if you got the bad version 1.1.0. (7 Feb 2011)
    1.1.1 - Use http://www.google.com instead of http://m.google.com. (7 Feb 2011)
    1.1.0 - Added the ability to install some hard-coded options: Google, Bing, and Yahoo mobile pages. LG now uses ProvisionXML. (7 Feb 2011)
    1.0.1 - Fixed cross-platform support. Added necessary dlls and updated ReadMe. (27 Jan 2011)
    1.0.0.0 Initial Release (27 Jan 2011)
    1
    Don't work in Samsung Omnia 7.

    This is the error at the launch :

    Unable to get current provider!
    System.OutOfMemoryException:
    OutOfMemoryException
    à
    Homebrow.deviceAPI.Registry.WindowsCERegistry.GetStringValue(Strin root; String path; String name)
    à
    IESearchSwitcher.RegistryAccess.GetCurrent()
    à IESearchSwitch.MainPage.Refresh()
    à IESearchSwitch.MainPage.LoadOptions()
    à IESearchSwitch.MainPage.Page_Loaded(Object sender, RoutedEventArgs e)
    à
    System.Windows.CoreInvokeHandler.InvokeEventHandler(Int32 typeIndex, Delegate handlerDelegate, Object sender, Object args)
    à MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, String eventName)

    That's all ... =)
    1
    New version posted! 1.1.0 is the first feature update: the Add button in the toolbar is now enabled, and you can add some of the most common search providers! Currently, you can add Google, Yahoo, and Bing mobile pages
    (http://m.[google|yahoo|bing].com). Note that if you already have a provider called Google, Yahoo, or Bing (not Bing app, that's different) installed on your phone, you won't see the option to add the provider. As with all registry writes in this app, you'll need to press a button ("Install" on the bar) before the app will make any changes.

    I've also changed the way LG phones write to the registry. Previously they were using an LG-specific native function that (due to being incompletely wrapped in the library I had) would only write to HKLM. Since the key that needs to be changed is in KHCU, this probably wasn't working. I changed it to use ProvisionXML for registry writing (the same technique used for HTC, which is verified to work). PLEASE try this app on LG phones and let me know if you can make changes successfully!

    The Samsung registry interaction also uses a native write function, but this one should allow writing to HKCU. I hope it does, because currently I don't have the ability to use ProvisionXML on Samsung devices...

    Please try it out and let me know what you find! I can include more providers by default, but I am also working on the ability to install your own. I figure the big three should be a good start for most people and will at least let you test the app.
    1
    I installed and run it on HD2 WP7, I only have Bing App on the drop down combo. At the bottom, the plus button is grayed so can't add or edit current search provider. How does this realy work?
    Your OS image doesn't include any other providers by default, it seems. I've implemented a simple form of the Add function (plus button) though.

    I think it's worth to clarify: this app can do smth for your phone if you have non-bing search; I believe bing search is always present on device but isn't always set as a default one. If you are like me having bing set out of the box there's pretty high chance you won't be able to change search provider as there are no necessary entries for those. This app does not allow you to add search providers as of yet but the author is heading there. So let's just subscribe for this branch and wait. It's worth posting if you do have more than just bing and cannot use app to change provider (i.e. report issues).

    @GoodDayToDie, man, can't wait to add Google... Your work is much appreciated!
    Thanks, @nayato!

    To everybody asking for more options, your wishes have been heard!! The new version lets you add Bing, Google, or Yahoo (as a mobile site, for example http://m.google.com) using the Add (+) button. Please try it out!
    1
    So it's still not working on the Focus. Gives a long, long error message.

    Error when installing search option!
    System.Exception: [FCRouterProxy] : e :
    RegistrySetString : Devicelo Control failed for IOCTL_FCR_REGISTRY_SET_STRING: -2147024894

    at
    Homebrew.DeviceAPI.Registry.SamsungRegistry.SetStringValue(String root, String path, String name, String value)
    at
    IESearchSwitcher.RegistryAccess.AddOption(SearchOption option)
    at
    Microsoft.Phone.Shell.ApplicationBarItemContainer.FireEventHandler(EventHandler handler, Object sender, EventArgs)
    at
    Microsoft.Phone.Shell.ApplicationBarIconButton.ClickEvent()
    at
    Microsoft.Phone.Shell.ApplicationBarIconButtonContainer.ClickEvent()
    at
    Microsoft.Phone.Shell.ApplicationBar.OnCommand(UInt32 idCommand)
    at
    Microsoft.Phone.Shell.Interop.NativeCallbackInteropWrapper.OnCommand(UInt32 idCommand)


    ----



    Took a while to type so I hope it's helpful. :D