Showing posts with label oreo. Show all posts
Showing posts with label oreo. Show all posts

11/17/17

Getting your Android app ready for Autofill







Posted by Wojtek Kalicinski, Android Developer Advocate, Akshay Kannan,
Product Manager for Android Authentication, and Felipe Leme, Software Engineer on Android Frameworks


Starting in Oreo, Autofill makes it easy for users to provide credit cards,
logins, addresses, and other information to apps. Forms in your apps can now be
filled automatically, and your users no longer have to remember complicated
passwords or type the same bits of information more than once.



Users can choose from multiple Autofill services (similar to keyboards today).
By default, we include Autofill with Google, but users can also select any third
party Autofill app of their choice. Users can manage this from
Settings->System->Languages>Advanced->Autofill service.



What's available today



Today, Autofill with Google supports filing credit cards, addresses, logins,
names, and phone numbers. When logging in or creating an account for the first
time, Autofill also allows users to save the new credentials to their account.
If you use WebViews in your app, which many apps do for logins and other
screens, your users can now also benefit from Autofill support, as long as they
have Chrome 61 or later installed.



The Autofill API is open for any developer to implement a service. We are actively
working with href="https://support.1password.com/android-autofill/#set-up-autofill">1Password,
href="https://blog.dashlane.com/introducing-dashlane-support-for-android-o-autofill-api/">Dashlane,
href="https://blog.keepersecurity.com/2017/09/06/android-o-customers-now-have-the-support-they-need-to-autofill-apps-with-keeperfill/">Keeper,
and href="https://blog.lastpass.com/2017/08/lastpass-public-beta-android-oreo.html/">LastPass
to help them with their implementations and will be working with other password managers shortly.
We are also creating a new curated collection on the Play Store, which the "Add service" button in Settings will link to. If you
are a password manager developer and would like us to review your app, please href="https://docs.google.com/forms/d/e/1FAIpQLScem3Xhk4991YKhX3YtPUZ7_YSuFZGacdH5r5yFO8lrSMQNqA/viewform?usp=sf_link">get
in touch.


What you need to do as a developer



As an app developer, there are a few simple things you can do to take advantage
of this new functionality and make sure that it works in your apps:


Test your app and annotate your views if needed



In many cases, Autofill may work in your app without any effort. But to ensure
consistent behavior, we recommend providing explicit hints to tell the framework
about the contents of your field. You can do this using either the href="https://developer.android.com/guide/topics/text/autofill.html#providing_hints_for_autofill">android:autofillHints
attribute or the href="https://developer.android.com/guide/topics/text/autofill.html#providing_hints_for_autofill">setAutofillHints()
method.



Similarly, with WebViews in your apps, you can use HTML href="https://developers.google.com/web/updates/2015/06/checkout-faster-with-autofill">Autocomplete
Attributes to provide hints about fields. Autofill will work in WebViews as
long as you have Chrome 61 or later installed on your device. Even if your app
is using custom views, you can also href="https://developer.android.com/guide/topics/text/autofill.html#custom_views_with_standard_view_structure">define
the metadata that allows autofill to work.



For views where Autofill does not make sense, such as a Captcha or a message
compose box, you can explicitly mark the view as href="https://developer.android.com/guide/topics/text/autofill.html#mark_fields_as_important_for_autofill">IMPORTANT_FOR_AUTOFILL_NO
(or href="https://developer.android.com/guide/topics/text/autofill.html#mark_fields_as_important_for_autofill">IMPORTANT_FOR_AUTOFILL_NO_EXCLUDE_DESCENDANTS
in the root of a view hierarchy). Use this field responsibly, and remember that
users can always bypass this by long pressing an EditText and selecting
"Autofill" in the overflow menu.


Affiliate your website and mobile app



Autofill with Google can seamlessly share logins across websites and mobile apps
‒ passwords saved through Chrome can also be provided to native apps. But in
order for this to work, as an app developer, you must explicitly declare the
association between your website with your mobile app. This involves 2 steps:


Step 1: Host a JSON file at
yourdomain.com/.well-known/assetlinks.json



If you've used technologies like App Links or Google Smart Lock before, you
might have heard about the Digital Asset Links (DAL) file. It's a JSON file
placed under a well known location in your website that lets you make public,
verifiable statements about other apps or websites.



You should follow the href="https://developers.google.com/identity/smartlock-passwords/android/associate-apps-and-sites">Smart
Lock for Passwords guide for information about how to create and host the
DAL file correctly on your server. Even though Smart Lock is a more advanced way
of signing users into your app, our Autofill service uses the same
infrastructure to verify app-website associations. What's more, because DAL
files are public, third-party Autofill service developers can also use the
association information to secure their implementations.


Step 2: Update your App's Manifest with the same
information



Once again, follow the href="https://developers.google.com/identity/smartlock-passwords/android/associate-apps-and-sites">Smart
Lock for Passwords guide to do this, under "Declare the association in the
Android app."



You'll need to update your app's manifest file with an asset_statements
resource, which links to the URL where your assetlinks.json file is hosted. Once
that's done, you'll need to submit your updated app to the Play Store, and fill
out the href="https://docs.google.com/forms/d/e/1FAIpQLSc3FCn8ccGpgXd1jtLBVRlNJ6EhWQK50hNO5jT_9nuqHI79pg/viewform">Affiliation
Submission Form for the association to go live.



When using Android Studio 3.0, the App Links Assistant can generate all of this
for you. When you open the DAL generator tool (Tools -> App Links Assistant ->
Open Digital Asset Links File Generator), simply make sure you enable the new
checkbox labeled "Support sharing credentials between the app and website".




Then, click on "Generate Digital Asset Links file", and copy the preview content
to the DAL file hosted on your server and in your app. Please remember to verify
that the selected domain names and certificates are correct.


Future work



It's still very early days for Autofill in Android. We are continuing to make
some major investments going forward to improve the experience, whether you use
Autofill with Google or a third party password manager.



Some of our key areas of investment include:


  1. Autofill with Google: We want to provide a great experience
    out of the box, so we include Autofill with Google with all Oreo devices. We're
    constantly improving our field detection and data quality, as well as expanding
    our support for saving more types of data.
  2. WebView support: We introduced initial support for filling
    WebViews in Chrome 61, and we'll be continuing to test, harden, and make
    improvements to this integration over time, so if your app uses WebViews you'll
    still be able to benefit from this functionality.
  3. Third party app support: We are working with the ecosystem
    to make sure that apps work as intended with the Autofill framework. We urge you
    as developers to give your app a spin on Android Oreo and make sure that things
    work as expected with Autofill enabled. For more info, see our full
    documentation on the href="https://developer.android.com/guide/topics/text/autofill.html">Autofill
    Framework.


If you encounter any issues or have any suggestions for how we can make this
better for you, please href="https://docs.google.com/forms/d/e/1FAIpQLScem3Xhk4991YKhX3YtPUZ7_YSuFZGacdH5r5yFO8lrSMQNqA/viewform?usp=sf_link">send
us feedback.


Read more

8/23/17

Making it safer to get apps on Android O

Posted by Edward Cunningham. Product Manager, Android Security


Eagle-eyed users of Android O will have noticed the absence of the 'Allow
unknown sources' setting, which has existed since the earliest days of Android
to facilitate the installation of apps from outside of Google Play and other
preloaded stores. In this post we'll talk about the new Install unknown
apps
permission and the security benefits it brings for both Android
users and developers.



Earlier this year we introduced href="https://www.blog.google/products/android/google-play-protect/">Google Play
Protect - comprehensive security services that are always at work to protect
your device from harm. Google Play continues to be one of the safest places for
Android users to download their apps, with the majority of Potentially Harmful
Apps (PHAs) originating from third-party sources.



A common strategy employed by PHA authors is to deliver their apps via a hostile
downloader. For example, a gaming app might not contain malicious code but
instead might notify the user to install a PHA that masquerades as an important
security update. (You can read more about hostile downloaders in the href="https://www.blog.google/topics/connected-workspaces/diverse-protections-diverse-ecosystem-android-security-2016-year-review/">Android
Security 2016 Year in Review). Users who have enabled the installation of
apps from unknown sources leave themselves vulnerable to this deceptive
behavior.








Left (pre-Android O): The install screen for a PHA masquerading as a system
update.
Right (Android O): Before the PHA is installed, the user must first grant
permission to the app that triggered the install.



In Android O, the Install unknown apps permission makes it
safer to install apps from unknown sources. This permission is tied to the app
that prompts the install— just like other runtime permissions—and ensures that
the user grants permission to use the install source before it can prompt the
user to install an app. When used on a device running Android O and higher,
hostile downloaders cannot trick the user into installing an app without having
first been given the go-ahead.



This new permission provides users with transparency, control, and a streamlined
process to enable installs from trusted sources. The Settings app shows the list
of apps that the user has approved for installing unknown apps. Users can
revoke the permission for a particular app at any time.








At any time, users can review the apps that they've allowed for installing
unknown apps. To make the permission-granting process easier, app developers can
choose to direct users to their permission screen as part of the setup
flow.


Developer changes




To take advantage of this new behavior, developers of apps that require the
ability to download and install other apps via the Package Installer may need to
make some changes. If an app uses a targetSdkLevel of 26 or above
and prompts the user to install other apps, the manifest file needs to include
the href="https://developer.android.com/reference/android/Manifest.permission.html#REQUEST_INSTALL_PACKAGES">REQUEST_INSTALL_PACKAGES
permission:



class="prettyprint"><uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />


Apps that haven't declared this permission cannot install other apps, a handy
security protection for apps that have no intention of doing so. You can choose
to pre-emptively direct your users to the Install unknown apps
permission screen using the href="https://developer.android.com/reference/android/provider/Settings.html#ACTION_MANAGE_UNKNOWN_APP_SOURCES">ACTION_MANAGE_UNKNOWN_APP_SOURCES
Intent action. You can also query the state of this permission using the
PackageManager href="https://developer.android.com/reference/android/content/pm/PackageManager.html#canRequestPackageInstalls()">canRequestPackageInstalls()
API.


Remember that href="https://play.google.com/about/developer-content-policy/">Play policies
still apply to apps distributed on Google Play if those apps can install and
update other apps. In the majority of cases, such behavior is inappropriate; you
should instead provide a href="https://developer.android.com/distribute/marketing-tools/linking-to-google-play.html">deep
link to the app's listing on the Play Store.



Be sure to check out the updated href="https://developer.android.com/studio/publish/index.html#publishing-unknown">publishing
guide that provides more information about installing unknown apps, and stay
tuned for more posts on security hardening in Android O.




Read more
loading...