* GH-23: Added Tizen backend (#555)
* Adding the initial work to get Tizen started. #23
* Adding the initial work to get Tizen started. #23
* Use the overloads properly.
* Use the overloads properly.
* Tizen needs to have a background explicitly set
* Added the Vibration API
* Added the Vibration API
* Refactoring a little bit
* Refactoring a little bit
* Added the Browser API and some basic permissions checking
* Added the Browser API and some basic permissions checking
* Added the Battery API
* Added the Battery API
* Added the Acceleromerter API
* Added the Acceleromerter API
* Added the Filesystem API
* Added the Filesystem API
* Update Accelerometer Initialize using GetDefaultSensor
* Update Accelerometer Initialize using GetDefaultSensor
* Added the Gyroscope API
* Added the Gyroscope API
* Added the Magnetometer API
* Added the Magnetometer API
* Added the Compass API
* Added the Compass API
* Added the Connectivity API
* Added the Connectivity API
* Added the Flashlight API
* Added the Flashlight API
* Added the SecureStorage API
* Added the SecureStorage API
* Added the Vibration API
* Added the Vibration API
* Fixed build break
* Fixed build break
* Added the OrientationSensor API
* Fixed build break
* Initialized Maps/Launcher for Tizen
* Added the Permissions API
* Added the Geolocation API
* Added the Geocoding API
* Fixed build break
* Initialize Barometer API
* Added the Barometer API
* Added the TextToSpeech API
* Added the Launcher APIs
* Fixed bugs
* Update Location property name
* Update several modules
- Update AppInfo, Browser, Clipboard, Compass, Connectivity,
DisplayInfo, DeviceInfo, Geocoding, TextToSpeech modules
- Change module name DataTrasfer to Share, Maps to Map
- Integrated module Power to Battery, ScreenLock to DeviceDisplay
* Throw PlatformNotSupportedException for Tizen
* Change the exception for the power saver feature
* Add tizen privileges
* Add FileBase
* Add ShareFileRequest
* Change enum for Browser
* Change parameter for Permissions
* Add SensorSpeedExtensions
* Add Launcher for OpenFileRequest
* Fix .csproj for VS2019
* Fix sample for watch
* Fix Geolocation speed
* Fix TextToSpeech ptich
* Fixed missing using System;
This was needed for the Math calls
* Add Support for ⌚OS and 📺OS (#827)
* Add Support for watchOS and tvOS
* Fix up exception from shared netstandard code to figure out what to send.
* Update Battery.ios.watchos.cs
* Integrate Tizen into the netstandard not supported area.
* [Tizen] Fix reference for avoid duplication (#850)
* Fix reference to avoid version collision
* Remove Vector3 reference on Tizen
* Fix iPad not show share sheet (#873)
Need to specify bottom center of the screen.
* Added the Main Thread helpers from Xamarin.Forms (#849)
* Added Invoke methods from Xamarin.Forms
* Updated to use Essentials approach to calling the MainThread
* Updated the docs with the new MainThread methods
* Make overload more readable
The old code was I think incorrect in that the `funcTask()` was never awaited or returned as a task. This is the same code as the overload with the generic type parameter, but without the type param.
* Updated to use UrlEncode in GetMailToUrl (#848)
* Updated to use UrlEncode in GetMailToUrl
Fixes#843
* Added missing using
* Fixed Using order and spacings
* Use WebUtility.UrlEncode on placemark extensions
* Added volatile to MainThread.Android (#877)
Fixes#838
* Add Launcher.TryOpenAsync (#839)
* Add Launcher.TryOpenAsync
* Added ConfigureAwait(false)
* Removed unnecessary async
* Updated launcher docs
* Updated the docs
* Added Launch Tests
* Add aka.ms for release notes (#883)
* Remove experimental flags & fix launcher teasts (#887)
* Implement Open File in Launcher. Fixed#601 & #425
* Add title to open file request for android launcher
* Clean FileBase and AttachmentName. Added documentation.
* Fix encoding
* Remove namesapces that aren' t needed
* Use SharedPreferences.Editor.Apply when editing to force disk write to be asynchronous (#637)
* GH-182 Color/Point/Rect/Size Extension Converters (#651)
* Add extension helpers for iOS and Android
* Add UWP colors and adjsut android colors.
* Add UWP Point/Rect/Size
* Rename and optimize!
* Add tests and color helpers!
* Fix unit test and add WithAlpha
* Cleanup iOS as it stores it from 0-1
* Tests are all green!
* Add generate-docs cmd :)
* Add docs config to all :)
* Additional clenaup for docs
* Added some docs
* Updated the mdoc target and regenerated the docs
* Allow for code reuse on macOS (#665)
Even though macOS is not yet officially supported, it is nice to reuse this code. macOS is exactly the same, except for this single property not supported.
* GH-196 Browser Customization (#646)
* Implemented GH-196
* Apply suggestions from code review: Naming
Renamed incorrectly spelled variables
Co-Authored-By: Mrnikbobjeff <schillinik@yahoo.de>
* Implemented GH-196
* Browser update work as requested. Using System.Drawing.Color now
* Adopted more review changes. Type forwarded.
* Review changes
* Made equals operator null safe, removed constructor
* Add documentation and simplify the API!
* Update viewmodel
* Back to 7.2
* GH-676 Require To Check GPS Location is Fake Or Not In GeoLocation (#677)
* Added bool IsFromMockProvider in Location class
* Checkin
* csproj original
* Revert "csproj original"
This reverts commit 6302b95782006288862f0ce11100c81936baa7fb.
* Revert "Checkin"
This reverts commit 0881e4f12c36caecd08b3b9bb8757d8bd1025502.
* Revert "Added bool IsFromMockProvider in Location class"
This reverts commit e56d9406cf0a92d24b04607afe81aef23aca696c.
* Revert the Xamarin.Essentials.csproj and Samples.Android.csproj to original;
Adjust the property IsFromMockProvider in Location.shared and LocationExetensions.
* Edited sample to show if the location is from moking provider.
* Update docs
* Fixes#694 (#699)
* Update the mdoc to use the new minimum for VS2019
* GH-126: Finish Shake Detector API (#693)
* Update CONTRIBUTING.md (#692)
* GH-126 Detect Shake API (#666)
* Added shaken support
* name vhange
* check-in
* doc update
* Implements the Shake API inside Accelerometer Class;
Change sample to AccelorometerViewModel
* Fix the sample project
* Update the docs
* Added Queue mechanism based off seismic with tests as well. Something is not right yet with calulating isaccelerating.
* Finalize shake detection!!!
* Re-generated the docs.
* Fix the VM after merge
* GH-704 Handle duplicate item in keychain (#705)
* Update CONTRIBUTING.md (#692)
* #704 if we get a duplicate item try to remove and then re-add if possible.
* Add all possible combinations for coords to km or mile (#721)
* Add all possible combinations for coords to km or mile
* Update UnitConverters_Tests.cs
* Use more explicit job definitions
* Update UnitConverters_Tests.cs
* GH-698 Set longer delay on connectivity changes - Android (#700)
* Update CONTRIBUTING.md (#692)
* Fixes#698
* Use original string instead of uri (#716)
* GH-643: Add Android P targeting and support 28 support (#669)
* Update PULL_REQUEST_TEMPLATE.md
* Fixes#643 to add android P targeting and support 28 support
* Add suppresses for Android P
* Cleanup SDKs based on @redth
* Update more nugets
* More optimizations for Retargeting
* Refactor HasApiLevelN and updated support to 28.0.0.1
* Update manifest and key :)
* Update the device tests certificates
* Make sure to run the checks always
* Updating the certs again to see if CI notices this time...
* Change order to reflect enum (#735)
* Lock keystore on Android for cipher (#734)
* Add locks around android keystore.
* move convert out of lock
* GH-130 & GH-129: Android support for safe shareable file URI’s (#416)
* Android: Support for safe shareable file URI’s
On later versions of Android, you have to wrap streams of data you want to share outside your app (between apps) in a stream through a content provider. Android Support providers a general use FileProvider we can use for this. This commit basically adds support for getting all the right AndroidManifest declarations for the custom file provider based on the android support provider, so that we expose an internal method which gets a URI safe for sharing outside of the app.
* Fix absolute type naming
* Add a user interaction test for File Provider
* Fix vibration code
the ifdef meant an empty `else { }` statement with no `if { }` for platforms < 26. This fixes that.
* Reorder using statements
* Fix test attribute
* Get provider authority properly
* Added external storage permission
* Change file provider path
This is md5(“xamarin_essentials”)
* Copy file into temp folder instead of file
We keep the filename the same this way but use a GUID for a temp sub-folder to ensure a unique path.
* Resgen
* Permissions may need to be checked to control functionality
* The Android FileProvider now can detect permissions
- internal / external storage can be controlled
- KitKat+ does not require the permissions
- corrected the FileProvider resource xml
* Added support for email attachments
- support for a string path and native file types
* Added attachments to the sample app
* Updated the docs with the new types
* Some fixes for iOS
* Fix the mdoc target
* regen docs
* remove the obsolete armeabi ABI
* Reworked the file logic to try and use public folders first
- if the file is already exposed, then just use it directly
- if the file is private, copy to an exposed location first
- exposing the internal and external caches and the public/external files
* Be more specific with the external storage permission name
* Added some more depth to the comments here
* Unnecessary else
* Added base file info class
* EmailAttachment now derives from FileBase
* Added File Sharing
* Keep track of IStorageFile internally
* Prefer internal IStorageFile in UWP
* Use attachment name properly in UWP
* Add ctor to create from existing FileBase
This will let us use UWP to create a new instance of something derived from FileBase with another instance of something else derived from FileBase, all while keeping track of the same `IStorageFile` instance.
So we can conceivably do something like:
```csharp
var mediaFile = await MediaPicker.PickPhotoAsync();
var attachment = new EmailAttachment(mediaFile);
```
* Add ctors for FileBase
* Add ctors for ShareFileRequest
* We can't use N on pre-N platforms
* Updated the docs
* Update some docs.
* Bump
* Gate Email/Share files with feature flags
* Add sample for ShareFileRequest
* Added test for share method in netstandard
* [WIP] Adding the Device Tests to the yaml (#737)
* Add the device tests to the yaml
* Select the latest version of xamarin/xcode
* Specify the iPhone simulator in the yaml
* Install the Android emulator
* Fix the shared test
* try to resolve build issue with missing nuget
* Fix docs
* Fix ref
* Trim . off start of extension for getting mimetype
* Don't add empty strings on UWP to email (#738)
* Cleanup UWP a bit
* Rename AppInfo.OpenSettings -> ShowSettingsUI
Fixes#567
* Missed one docs rename
* Added back a missing using.
* Fixed up Clipboard API! Updated everything SetTextAsync.
Update xunit test runners
* Updates Connectivity APIs from the review! got rid of Other made it unknown, removed WiMAX and updated Profiles to ConnectionProfiles
* Change MapKey to Platform.MapServiceToken only for UWP
* Dropping the version of the device runner until we can figure out what is broken on UWP (#596)
* Update docs/en/FrameworksIndex/xamarin-essentials-uwp.xml
Co-Authored-By: jamesmontemagno <james.montemagno@gmail.com>
* Fix spacing
* Updated DOCS!
* Added Default and set it to Medium
* [Platform] Remove the Platform for .net standard since it does nothing (#592)
- closes#579
* GH-583: [api-fix] Power / Battery (#591)
* Move the `Power` members into `Battery` Closes#583
* [Battery] If the charge can be determined, return 1.0
- if the device is on, then it must have some charge
- chances are, the issue is that there is no battery at all (on power)
- closes#583
* Merged the PR
* GH-568: [api-fix] Browser (#589)
* OpenAsync returns Task<bool>
Also on iOS we can take advantage of some async methods like PresentViewControllerAsync now.
* Update API docs
* Update Browser.shared.cs
* re-gen docs
* Generated docs
* Revert this to avoid conflicts
* Add in DeviceIdiom and DevicePlatform
* Updated the docs and added a .gitattributes to control the line endings
* Renamed SpeakSettings to SpeechOptions. Closes#580
* Add docs about HTML emails not supported on UWP. Closes#578
* [Map] Fixed the type names and enum values. Closes#576
* Refactor display info and keep screen on.
* Add device display.
* Change to BatteryInfoChanged and BatteryInfoChangedEventArgs
* Revert back battery intent
* If we can't unwrap the key, then tear down everything and start over again.
* Change back to "DisplayInfoChangedEventArgs"
* Update Battery.android.cs
* change to valid key
* Update Battery.android.cs
* Add docs
* Rename file correctly for docs!
* Cleanup docs
* Catch only specific exceptions. some code cleanup
* Updated the sensors to adhere to guidelines. #582
- enum names
- compas low pass filter is now a param
- updated docs
- public constructors on data and events
- stating an already started sensor will throw
- sensor use the same units on all platforms
Added a unit conversion API. #575
* Catch invalid key exception.
* If there is no main window, then there is no UI thread. Closes 510
* Fixes#612
We shouldn't have a need for telephony as we don't check it on others and restricts VOIP apps.
* Integrate html option into sample for email. (#623)
* Add Unknown to DeviceType. Update .net standard to return unknown for platform/idiom/type (#627)
* Update nugetreadme.txt (#625)
* Integrate sourcelink https://github.com/dotnet/sourcelink
* Add /p:ContinuousIntegrationBuild=true to build.ps1
* Update Xamarin.Essentials.csproj
* Update build.ps1
* Update to latest source link
* Only add sourcelink in release config
* Cleanup build for mac
* Add properties to turn off CI on device tests.
* Use strings
* Use list
* missed one
* Only add on release and windows :)
* GH-287 Maps Implementation (#361)
* Implemented maps as mentioned in branch name issue. also fixed a spelling mistake
* Added samples
* Added doc stubs
* Added comments for map types
* Refactored code
* Formatting of docs
* Added tests
* Changed coordinates to display something recognisable
* Added uri escaping, thus removing duplicate code. also had to turn off a warning due to inconsistent style cop and vs warning behaviour.
* Removed ref until in is added in c# 7.2
* Adressed issues in pr
* Updated launch code
* Adressed method to onliner
* Updated docs
* Removed ClearTop intent, added sample with adress
* Rename to align names. Added extensions and additional paramaters.
* Update tests
* Throw if options are null.
* Add overload for lat/long without options
* GH-250 Implement Launcher API (#356)
* Initial commit for Launcher Api as discussed in Issue 250
* Fixed and refactored android launch code, fixed unit tests. Fixed namespaces.
* Refactored code, fixed uwp launcher. Added unit test
* Added sample launcher page and viewmodel.
* Fixed launcher Page typo
* Refactored launcher code. after testing exception behaviour I decided on rethrowing instead of swallowing the exception
* Refactored access modifiers. Also changed exception behaviour to enforce uri validity and exception behaviour across platforms.
* Updated docs, stripped even more code.
* Added validation. Adressed all other changes as required in pr
* Removed dead code
* Adressed last issues from pr
* Cleanup launcher
* cleanup iOS tests
* Early morning typos
* Use Internal Preferences for Secure Storage consistency.
Save if we created key pre-M so we always use pre-M if device upgrades.
* Fix logic for pre-m key check
The logic was slightly off, I think this fixes it, but would be good to have another set of eyes...
1. We check to see if the device is pre-M (if it does _not_ have `M`, or if we already set the fact it's pre-M in the preference - aka from a previous install before an upgrade of the OS)
2. If we aren't pre-M, we can't use Symmetric Key from Keystore
3. If we make it down to using Asymmetric Key, we set the pre-M preference to `true` to persist the value for future invocations, which will make it 'stick' in the event of a pre-M to M+ OS upgrade.
* Address feedback on key naming.
* Added test for secure storage to simulate upgrade
From API < 23 to API >= 23 after storing data with an asymmetric key and then moving to a platform supporting symmetric keys.
* Ensure we always set flags when using specified keygen
* Allow for unicode in host names and escape query
Previously we were passing the the url as is to each platform and letting it deal with how to parse into the platform specific url.
This handles unicode domain names (IDN Mapping aka PunyCode) for the domain, but also reconstructs the url based on the parsed System.Uri from the original string, and so the PathAndQuery will be the % escaped version which will account for unicode characters in it as well.
Finally, on iOS and Android we are using AbsoluteUri to end up with the fully IDN mapped and % encoded URL to pass to the system URL types.
* Extract Escape Uri logic into its own method
More testable.
* Add uri escaping tests
* Improve uri escape tests
* Update default iOS DeviceTests target
Also don’t allow picking a sim that’s unavailable (this was a bug since we were checking for contains `available` which of course `unavailable` also contains!)
* Make sure orientation sensor stops on sample.
* Fix up all sensors page to start and stop correctly
* Only check permission if unknown status
* Update to latest sdk.extras
* fix back button press on TTS page. Check for null.
* Add samples sln for CI/CD
* Update readme and samples sln
* Don't use code sign key for simbuilds
* let's try this gain
* Update to projects
* Cleanup sample config
* bump sdk extras
* [secure-storage] Added `Remove` and `RemoveAll`
* [secure-storage] Added tests for Remove/RemoveAll
* [secure-storage] Remove unnecessary method
We no longer consider the `SecAccessible` value when _retrieving_ KeyChain records anymore, so it’s unnecessary to pass this value into the Get call, and unnecessary to have a platform specific overload with this parameter for getting a record.
* [secure-storage] updated docs
* [secure-storage] update sample with remove methods
* [secure-storage] Fix GetAsync call for iOS
We don’t use the overload with SecAccessible any longer.
* Fix android remove, we must do a md5hash of the key as that is how it was stored :)
* [secure-storage] Fix iOS PlatformGet
* Fixes#285 Implements IsLowerPowerModeEnabled for each platform.
* Add sample and tests
* Some changes to the low-power/energy-saver status
- moved to the battery calss
- using an enum and not a bool
- added an event that will watch the status
* No need to touch these file now.
* Reordered members
* Decided to move the power bits into a new type
* Duplicate types
* Use System.Diagnostics.Debug
* Add docs for power
* Add missing docs :)
* Fix build
* [secure-storage] consistent return with no value
Currently iOS varied a bit in what it returned if `Get` was called using a key that had no associated/stored value (it was returning `string.Empty`). This fixes iOS to be consistent with UWP and iOS returning `null` instead.
* [secure-storage] test null return, key with no val
This tests to ensure all platforms return null when `SecureStorage.GetAsync` is called using a key that has no existing record/value stored.
* iOS secure storage simulator tests (#247)
* Remove line that skips test on virtual devices
* Adding keychain-access-groups in Entitlements.plist
* Setting CodeSign entitlements for Debug configuration
* Making same entitlement.plist changes for iOS sample
* Removing specific code sign key
* Removing physical device trait for iOS SecureStorageTests
* Update DeviceTests.iOS.csproj
* Update Samples.iOS.csproj
* Add configs for codesign on release
* Address #221, use AfterFirstUnlockThisDeviceOnly to match other platforms. Although allow a platform specific override to set accessible state.
* Add tests
* Added iOS specific prop to set SecAccessible
* Default to AfterFirstUnlock on iOS SecureStorage
* Cleaned up the API a bit:
- removed unnecessary static fields
- removed unnecessary braces
- a few other tweaks to reduce weird line wraps
* Stopping the sensors requires that they are actually supported.
* Added hardware traits to the tests to avoid evil code
* Fixed some more tests.
* We need to keep a reference to the sensors.
* Android needs to filter some events to avoid large amounts of unnecessary updates
* Gyroscopes are not emulated for Android
Previously if device tests failed to run or complete, the listener would wait indefinitely, timing out the build. Now the listener will time out after the specified amount (60 seconds by default) so the build can fail faster.