From 2b286bb26b95ac9d4eb35679239ea12d4f63b50b Mon Sep 17 00:00:00 2001 From: Dirk Dougherty Date: Thu, 29 Nov 2012 17:25:09 -0800 Subject: Doc change: cleanup filtering sidebars and api level table. Changes links pointing to billing and other play docs that have moved. Change-Id: I5528e82a6f97eb25f2ec2db5dfe1e178d9580f3c --- docs/html/about/versions/android-3.1.jd | 2 +- docs/html/about/versions/android-4.2.jd | 2 +- docs/html/about/versions/jelly-bean.jd | 2 +- docs/html/develop/index.jd | 2 +- .../distribute/googleplay/about/distribution.jd | 2 +- .../html/distribute/googleplay/about/monetizing.jd | 2 +- docs/html/distribute/googleplay/publish/console.jd | 4 +- .../distribute/googleplay/publish/preparing.jd | 10 +-- docs/html/distribute/googleplay/quality/tablet.jd | 2 +- docs/html/distribute/open.jd | 4 +- docs/html/google/gcm/c2dm.jd | 2 +- docs/html/google/gcm/demo.jd | 4 +- docs/html/google/gcm/gs.jd | 4 +- docs/html/google/gcm/index.jd | 12 +-- docs/html/google/index.jd | 4 +- docs/html/google/play-services/dist.jd | 8 +- docs/html/google/play/billing/billing_about.html | 4 +- docs/html/google/play/billing/billing_admin.jd | 20 ++--- .../google/play/billing/billing_best_practices.jd | 12 +-- docs/html/google/play/billing/billing_integrate.jd | 44 +++++------ docs/html/google/play/billing/billing_overview.jd | 28 +++---- docs/html/google/play/billing/billing_reference.jd | 22 +++--- .../google/play/billing/billing_subscriptions.jd | 34 ++++----- docs/html/google/play/billing/billing_testing.jd | 22 +++--- docs/html/google/play/billing/index.jd | 34 ++++----- docs/html/google/play/dist.jd | 8 +- docs/html/google/play/expansion-files.jd | 30 ++++---- docs/html/google/play/filters.jd | 87 +++++++++++----------- .../html/google/play/licensing/adding-licensing.jd | 16 ++-- docs/html/google/play/licensing/index.jd | 10 +-- .../google/play/licensing/licensing-reference.jd | 6 +- docs/html/google/play/licensing/overview.jd | 4 +- docs/html/google/play/licensing/setting-up.jd | 12 +-- docs/html/google/play/publishing/multiple-apks.jd | 8 +- docs/html/guide/appendix/install-location.jd | 2 +- docs/html/guide/components/fundamentals.jd | 2 +- docs/html/guide/practices/compatibility.jd | 4 +- docs/html/guide/practices/screens-distribution.jd | 2 +- docs/html/guide/topics/data/install-location.jd | 2 +- .../topics/manifest/compatible-screens-element.jd | 4 +- .../html/guide/topics/manifest/manifest-element.jd | 2 +- .../topics/manifest/supports-gl-texture-element.jd | 42 +++++------ .../topics/manifest/uses-configuration-element.jd | 14 ++-- .../guide/topics/manifest/uses-feature-element.jd | 49 ++++++------ .../guide/topics/manifest/uses-library-element.jd | 23 ++++-- .../topics/manifest/uses-permission-element.jd | 18 ++--- .../html/guide/topics/manifest/uses-sdk-element.jd | 40 +++++----- docs/html/sdk/exploring.jd | 4 +- docs/html/tools/help/jobb.jd | 2 +- docs/html/tools/help/proguard.jd | 2 +- docs/html/tools/publishing/preparing.jd | 6 +- docs/html/tools/publishing/publishing_overview.jd | 8 +- docs/html/tools/sdk/tools-notes.jd | 2 +- docs/html/tools/workflow/publishing/preparing.jd | 4 +- docs/html/tools/workflow/publishing/publishing.jd | 18 ++--- .../workflow/publishing/publishing_overview.jd | 4 +- docs/html/tools/workflow/publishing_overview.jd | 4 +- docs/html/training/articles/security-tips.jd | 2 +- docs/html/training/cloudsync/gcm.jd | 8 +- .../efficient-downloads/regular_updates.jd | 4 +- docs/html/training/multiple-apks/api.jd | 8 +- docs/html/training/multiple-apks/index.jd | 2 +- docs/html/training/multiple-apks/multiple.jd | 8 +- docs/html/training/multiple-apks/screensize.jd | 8 +- docs/html/training/multiple-apks/texture.jd | 6 +- 65 files changed, 383 insertions(+), 388 deletions(-) diff --git a/docs/html/about/versions/android-3.1.jd b/docs/html/about/versions/android-3.1.jd index c39f1741a858..8681327fd8b3 100644 --- a/docs/html/about/versions/android-3.1.jd +++ b/docs/html/about/versions/android-3.1.jd @@ -825,7 +825,7 @@ devices. href="{@docRoot}guide/topics/manifest/uses-feature-element.html">{@code <uses-feature>} manifest elements. For more information about declaring features in an application manifest, read Google Play +href="{@docRoot}google/play/filters.html">Google Play Filters.

diff --git a/docs/html/about/versions/android-4.2.jd b/docs/html/about/versions/android-4.2.jd index 039e71efb4ce..37434fbbc0e5 100644 --- a/docs/html/about/versions/android-4.2.jd +++ b/docs/html/about/versions/android-4.2.jd @@ -343,7 +343,7 @@ unique installations. By creating a new {@link java.util.UUID} when your app first time, you’re certain to obtain a unique ID for tracking each user, regardless of how many users install your app on a single device. Alternatively, you can save a local token fetched from your server or use the registrations ID provided by Google Cloud Messaging.

+href="{@docRoot}google/gcm/index.html">Google Cloud Messaging.

Beware that if your app requests one of the hardware device identifiers (such as the WiFi MAC address, the {@link android.os.Build#SERIAL} number, or the {@link diff --git a/docs/html/about/versions/jelly-bean.jd b/docs/html/about/versions/jelly-bean.jd index 5350941c6c13..6cd6f9dd7b67 100644 --- a/docs/html/about/versions/jelly-bean.jd +++ b/docs/html/about/versions/jelly-bean.jd @@ -962,7 +962,7 @@ style="font-weight:500;">App Widgets can resize automatically to fit the

GCM handles all the details of queuing messages and delivering them efficiently to the targeted Android devices. It supports message multicasting and can reach up to 1000 connected devices simultaneously with a single request. It also supports message payloads, which means that in addition to sending tickle messages to an app on the device, developers can send up to 4K of data.

-

Google Cloud Messaging is completely free for all developers and sign-up is easy. See the Google Cloud Messaging page for registration, downloads, and documentation.

+

Google Cloud Messaging is completely free for all developers and sign-up is easy. See the Google Cloud Messaging page for registration, downloads, and documentation.

App Encryption

diff --git a/docs/html/develop/index.jd b/docs/html/develop/index.jd index 99bee673f77e..86c04a7e0ec2 100644 --- a/docs/html/develop/index.jd +++ b/docs/html/develop/index.jd @@ -52,7 +52,7 @@ src="http://1.bp.blogspot.com/-6K1kfNOdek8/T72bXvtTSQI/AAAAAAAABmw/kYzmJt0_328/s

In-app Subscriptions with Trials

You can now set up a free trial period for any Google Play in-app subscription, making it easy for users try your subscriber content before automatically converting to a full subscription. Free trials give you a new way to bring users into your products and engage them effectively.

Read +href="{@docRoot}google/play/billing/billing_subscriptions.html#trials">Read more

diff --git a/docs/html/distribute/googleplay/about/distribution.jd b/docs/html/distribute/googleplay/about/distribution.jd index 0d055abdb236..aff5dab41171 100644 --- a/docs/html/distribute/googleplay/about/distribution.jd +++ b/docs/html/distribute/googleplay/about/distribution.jd @@ -62,7 +62,7 @@ others.

When you upload your app, Google Play reads the dependencies and sets up any necessary distribution rules. For technical information about declaring -dependencies, read Filters on +dependencies, read Filters on Google Play.

For pinpoint control over distribution, Google Play lets you see all of the diff --git a/docs/html/distribute/googleplay/about/monetizing.jd b/docs/html/distribute/googleplay/about/monetizing.jd index 47d526629a72..cabd56bab83b 100644 --- a/docs/html/distribute/googleplay/about/monetizing.jd +++ b/docs/html/distribute/googleplay/about/monetizing.jd @@ -112,7 +112,7 @@ gameplay levels, and upgrades as in-app products. The only restriction is that free apps must remain free (to download) for the life of the app.

For details about in-app products or subscriptions, -see Google Play In-app Billing.

+see Google Play In-app Billing.

Flexible pricing in the currencies of your customers

diff --git a/docs/html/distribute/googleplay/publish/console.jd b/docs/html/distribute/googleplay/publish/console.jd index 31bef9c64c00..af2b7e8649df 100644 --- a/docs/html/distribute/googleplay/publish/console.jd +++ b/docs/html/distribute/googleplay/publish/console.jd @@ -141,10 +141,10 @@ time, just by saving changes in the Develoer Console.

-

In-app Billing is a Google Play service that lets you monetize your apps in more ways by selling in-app products and subscriptions. In-app products are one-time purchases, while subscriptions are recurring charges on an monthly or annual basis.

+

In-app Billing is a Google Play service that lets you monetize your apps in more ways by selling in-app products and subscriptions. In-app products are one-time purchases, while subscriptions are recurring charges on an monthly or annual basis.

From the Developer Console you can create product lists for in-app products and subscriptions, set prices, and publish.

diff --git a/docs/html/distribute/googleplay/publish/preparing.jd b/docs/html/distribute/googleplay/publish/preparing.jd index a3538a95c0ee..9b623e35b97e 100644 --- a/docs/html/distribute/googleplay/publish/preparing.jd +++ b/docs/html/distribute/googleplay/publish/preparing.jd @@ -188,7 +188,7 @@ launch target date.

Google Play. Currently, the maximum size for an APK published on Google Play is 50 MB. If your app exceeds that size, or if you want to offer a secondary download, you can use APK Expansion Files, +href="{@docRoot}google/play/expansion-files.html">APK Expansion Files, which Google Play will host for free on its server infrastructure and automatically handle the download to devices.

@@ -207,7 +207,7 @@ creating your release-ready APK.

Related resources:

@@ -276,7 +276,7 @@ you need set up a Checkout Merchant Account before you can publish.

Related resources:

@@ -284,7 +284,7 @@ you need set up a Checkout Merchant Account before you can publish.

9. Consider using In-app Billing

-

Google Play In-app +

Google Play In-app Billing lets you sell digital content in your applications. You can use the service to sell a wide range of content, including downloadable content such as media files or photos, and virtual content such as game levels or potions. @@ -302,7 +302,7 @@ before creating your release-ready APK.

Related resources:

diff --git a/docs/html/distribute/googleplay/quality/tablet.jd b/docs/html/distribute/googleplay/quality/tablet.jd index 80346a7bb8c2..cc7ba3f3587f 100644 --- a/docs/html/distribute/googleplay/quality/tablet.jd +++ b/docs/html/distribute/googleplay/quality/tablet.jd @@ -478,7 +478,7 @@ and tablets), with a single Google Play listing:
  • If necessary, you can alternatively choose to deliver your app using Multiple APK Support, +href="{@docRoot}google/play/publishing/multiple-apks.html">Multiple APK Support, although in most cases using a single APK to reach all devices is strongly recommended.
  • Highlight your app’s tablet capabilities in the product details page: diff --git a/docs/html/distribute/open.jd b/docs/html/distribute/open.jd index edcfc9c8afe2..f9e9c3b7fadd 100644 --- a/docs/html/distribute/open.jd +++ b/docs/html/distribute/open.jd @@ -74,9 +74,9 @@ users have configured their Settings to allow the installation of apps from website, it can be inefficient. For example, if you want to monetize your application you will have to process and track all financial transactions yourself and you will not be able to use Google Play's In-app Billing service +href="{@docRoot}google/play/billing/index.html">In-app Billing service to sell in-app products. In addition, you will not be able to use the Licensing service to +href="{@docRoot}google/play/licensing/index.html">Licensing service to help prevent unauthorized installation and use of your application.

    diff --git a/docs/html/google/gcm/c2dm.jd b/docs/html/google/gcm/c2dm.jd index e80a41fd1981..381460edeb60 100644 --- a/docs/html/google/gcm/c2dm.jd +++ b/docs/html/google/gcm/c2dm.jd @@ -75,7 +75,7 @@ page.title=Migration
    Canonical registration ID
    There may be situations where the server ends up with 2 registration IDs for the same device. If the GCM response contains a registration ID, simply replace the registration ID you have with the one provided. With this feature your application doesn't need to send the device ID to your server anymore. For more information, see Advanced Topics.
    -

    GCM also provides helper libraries (client and server) to make writing your code easier.

    +

    GCM also provides helper libraries (client and server) to make writing your code easier.

    Relationship between C2DM and GCM

    diff --git a/docs/html/google/gcm/demo.jd b/docs/html/google/gcm/demo.jd index 7e35fd6e2239..6dfae2d967c1 100644 --- a/docs/html/google/gcm/demo.jd +++ b/docs/html/google/gcm/demo.jd @@ -40,8 +40,8 @@ page.title=GCM Demo Application

    Here is the API reference documentation for the helper libraries on which the demo is based:

    The sections below describe how to download the demo code and helper libraries from the SDK Manager. The demo code and helper libraries are also available at the open source site. diff --git a/docs/html/google/gcm/gs.jd b/docs/html/google/gcm/gs.jd index fc5c4a264702..df13373efe7d 100644 --- a/docs/html/google/gcm/gs.jd +++ b/docs/html/google/gcm/gs.jd @@ -25,7 +25,7 @@ page.title=GCM: Getting Started -

    This document describes how to write an Android application and the server-side logic, using the helper libraries (client and server) provided by GCM.

    +

    This document describes how to write an Android application and the server-side logic, using the helper libraries (client and server) provided by GCM.

    Creating a Google API project

    @@ -85,7 +85,7 @@ page.title=GCM: Getting Started

    Note: If you need to rotate the key, click Generate new key. A new key will be created while the old one will still be active for up to 24 hours. If you want to get rid of the old key immediately (for example, if you feel it was compromised), click Delete key.

    Install the Helper Libraries

    -

    To perform the steps described in the following sections, you must first install the helper libraries (reference: client and server). From the SDK Manager, install Extras > Google Cloud Messaging for Android Library. This creates a gcm directory under YOUR_SDK_ROOT/extras/google/ containing these subdirectories: gcm-client, gcm-server, samples/gcm-demo-client, samples/gcm-demo-server, and samples/gcm-demo-appengine.

    +

    To perform the steps described in the following sections, you must first install the helper libraries (reference: client and server). From the SDK Manager, install Extras > Google Cloud Messaging for Android Library. This creates a gcm directory under YOUR_SDK_ROOT/extras/google/ containing these subdirectories: gcm-client, gcm-server, samples/gcm-demo-client, samples/gcm-demo-server, and samples/gcm-demo-appengine.

    Note: If you don't see Extras > Google Cloud Messaging for Android Library in the SDK Manager, make sure you are running version 20 or higher. Be sure to restart the SDK Manager after updating it.

    diff --git a/docs/html/google/gcm/index.jd b/docs/html/google/gcm/index.jd index 8079ebae6e2c..503812593cf9 100644 --- a/docs/html/google/gcm/index.jd +++ b/docs/html/google/gcm/index.jd @@ -10,19 +10,19 @@ page.title=Google Cloud Messaging for Android

    To learn more about GCM, you can join the android-gcm group and read the following documents:

    -
    Getting Started
    +
    Getting Started
    Read this document to learn the basic steps involved in developing Android applications based on GCM.
    -
    Architectural Overview
    +
    Architectural Overview
    Read this document for a description of the underlying concepts and architecture in GCM.
    -
    Demo App Tutorial
    +
    Demo App Tutorial
    Read this document to walk through setting up and running the GCM demo app.
    -
    Advanced Topics
    +
    Advanced Topics
    Read this document to get a more in-depth understanding of key GCM features.
    -
    Migration
    +
    Migration
    Read this document if you are a C2DM developer moving to GCM.
    -

    GCM also provides helper libraries for client and server development.

    +

    GCM also provides helper libraries for client and server development.

    diff --git a/docs/html/google/index.jd b/docs/html/google/index.jd index 57a3524da6a5..97e4ea43b176 100644 --- a/docs/html/google/index.jd +++ b/docs/html/google/index.jd @@ -65,7 +65,7 @@ and track app usage.

    -

    Google Cloud Messaging

    +

    Google Cloud Messaging

    Keep your users connected by delivering events with lightweight messages immediately from your web server. There are no quotas or charges to use Google Cloud Messaging.

    @@ -82,7 +82,7 @@ and track app usage.

    -

    In-App Billing

    +

    In-App Billing

    Build an app with a steady revenue stream that keeps users engaged by offering new content or virtual goods directly in your app. All transactions are handled by Google Play Store for a simple user experience. diff --git a/docs/html/google/play-services/dist.jd b/docs/html/google/play-services/dist.jd index 85a64f94e3cc..e179bff7fb10 100644 --- a/docs/html/google/play-services/dist.jd +++ b/docs/html/google/play-services/dist.jd @@ -21,7 +21,7 @@ page.title=Google Play Distribution and Licensing

    Make sure your app gets to the right users by filtering on a wide range of characteristics such as platform versions and hardware features. -

    Learn more »

    +

    Learn more »

    @@ -31,7 +31,7 @@ page.title=Google Play Distribution and Licensing

    Distribute different APKs based on a variety of properties such as platform version, screen size, and GLES texture compression support. -

    Learn more »

    +

    Learn more »

    @@ -43,7 +43,7 @@ page.title=Google Play Distribution and Licensing Tap into Google's content delivery services by serving up to 4GB of assets for free. Provide users with high-fidelity graphics, media files, or other large assets that are required by your app. -

    Learn more » +

    Learn more »
    @@ -51,6 +51,6 @@ page.title=Google Play Distribution and Licensing Application Licensing

    Protect your revenue streams and integrate policies for usage into your app. -

    Learn more » +

    Learn more »
    \ No newline at end of file diff --git a/docs/html/google/play/billing/billing_about.html b/docs/html/google/play/billing/billing_about.html index 9f41fa62e344..38616e6119f2 100644 --- a/docs/html/google/play/billing/billing_about.html +++ b/docs/html/google/play/billing/billing_about.html @@ -1,12 +1,12 @@ +content="0;url=http://developer.android.com/google/play/billing/index.html"> Redirecting...

    You should be redirected. Please click +href="http://developer.android.com/google/play/billing/index.html">click here.

    \ No newline at end of file diff --git a/docs/html/google/play/billing/billing_admin.jd b/docs/html/google/play/billing/billing_admin.jd index cb288a5381d5..2413ae5dd474 100755 --- a/docs/html/google/play/billing/billing_admin.jd +++ b/docs/html/google/play/billing/billing_admin.jd @@ -15,20 +15,20 @@ parent.link=index.html

    Downloads

      -
    1. Sample +
    2. Sample Application

    See also

      -
    1. Overview of In-app +
    2. Overview of In-app Billing
    3. -
    4. Implementing In-app +
    5. Implementing In-app Billing
    6. -
    7. Security and +
    8. Security and Design
    9. -
    10. Testing In-app +
    11. Testing In-app Billing
    12. -
    13. In-app Billing +
    14. In-app Billing Reference
    @@ -83,12 +83,12 @@ account and the application's manifest must include the com.android.vendin permission. If an application's manifest does not include this permission, you will be able to edit existing items in the product list but you will not be able to add new items to the list. For more information about this permission, see -Updating Your +Updating Your Application's Manifest.

    In addition, an application package can have only one product list. If you create a product list for an application, and you use the multiple APK feature to distribute +href="{@docRoot}google/play/publishing/multiple-apks.html">multiple APK feature to distribute more than one APK for that application, the product list applies to all APK versions that are associated with the application listing. You cannot create individual product lists for each APK if you are using the multiple APK feature.

    @@ -143,7 +143,7 @@ number of in-app items.

    Published and the item's application must be published on Google Play.

    Note: This is not true for test accounts. An item is visible to a test account if the application is not published and the item is published. See Testing In-app + href="{@docRoot}google/play/billing/billing_testing.html#billing-testing-real">Testing In-app Billing for more information.

  • Language @@ -435,7 +435,7 @@ in-app purchases must be directed to you (the application developer). You can th refund through your Google Wallet merchant account. When you do this, Google Play receives a refund notification from Google Wallet, and Google Play sends a refund message to your application. For more information, see Handling +href="{@docRoot}google/play/billing/billing_overview.html#billing-action-notify">Handling IN_APP_NOTIFY messages and In-app Billing Pricing.

    diff --git a/docs/html/google/play/billing/billing_best_practices.jd b/docs/html/google/play/billing/billing_best_practices.jd index 850c661e0426..dbf10574a2cf 100755 --- a/docs/html/google/play/billing/billing_best_practices.jd +++ b/docs/html/google/play/billing/billing_best_practices.jd @@ -11,20 +11,20 @@ parent.link=index.html

    Downloads

      -
    1. Sample +
    2. Sample Application

    See also

      -
    1. Overview of In-app +
    2. Overview of In-app Billing
    3. -
    4. Implementing In-app +
    5. Implementing In-app Billing
    6. -
    7. Testing In-app +
    8. Testing In-app Billing
    9. -
    10. Administering In-app +
    11. Administering In-app Billing
    12. -
    13. In-app Billing +
    14. In-app Billing Reference
    diff --git a/docs/html/google/play/billing/billing_integrate.jd b/docs/html/google/play/billing/billing_integrate.jd index 2d1582eebb34..2ca7c83c0f48 100755 --- a/docs/html/google/play/billing/billing_integrate.jd +++ b/docs/html/google/play/billing/billing_integrate.jd @@ -21,15 +21,15 @@ parent.link=index.html

    See also

      -
    1. Overview of In-app +
    2. Overview of In-app Billing
    3. -
    4. Security and +
    5. Security and Design
    6. -
    7. Testing In-app +
    8. Testing In-app Billing
    9. -
    10. Administering In-app +
    11. Administering In-app Billing
    12. -
    13. In-app Billing +
    14. In-app Billing Reference
    @@ -41,8 +41,8 @@ you implement in-app billing by stepping through the primary implementation task billing sample application as an example.

    Before you implement in-app billing in your own application, be sure that you read Overview of In-app Billing and Security and Design. These +href="{@docRoot}google/play/billing/billing_overview.html">Overview of In-app Billing and Security and Design. These documents provide background information that will make it easier for you to implement in-app billing.

    @@ -238,7 +238,7 @@ how to do this.

    your product list so that sword_001 has a purchase type of "Managed per user account" and potion_001 has a purchase type of "Unmanaged" so you can see how these two purchase types behave. To learn how to set up a product list, see Creating a Product + href="{@docRoot}google/play/billing/billing_admin.html#billing-list-setup">Creating a Product List.

    Note: You must publish the items in your product list (sword_001 and potion_001) even though you are not publishing the @@ -258,7 +258,7 @@ onto a device to run it. To run the sample application, do the following:

    You cannot purchase items from yourself (Google Wallet prohibits this), so you need to create at least one test account that you can use to purchase items in the sample application. To learn how to set up a test account, see Setting up Test + href="{@docRoot}google/play/billing/billing_testing.html#billing-testing-setup">Setting up Test Accounts.

  • Verify that your device is running a supported version of the Google Play @@ -279,7 +279,7 @@ onto a device to run it. To run the sample application, do the following:

  • Make one of your test accounts the primary account on your device.

    The primary account on your device must be one of the test accounts + href="{@docRoot}google/play/billing/billing_admin.html#billing-testing-setup">test accounts that you registered on the Google Play publisher site. If the primary account on your device is not a test account, you must do a factory reset of the device and then sign in with one of your test accounts. To perform a factory reset, do the following:

    @@ -466,7 +466,7 @@ indicates the item being purchased, and another identifies your application. The code. However, this is not the complete purchase response; the complete response is delivered with an asynchronous broadcast intent. For more information about the various Bundle keys that are supported by the MarketBillingService, see In-app Billing +href="{@docRoot}google/play/billing/billing_reference.html#billing-interface">In-app Billing Service Interface.

    You can use the sendBillingRequest() method to send five types of billing requests. @@ -482,7 +482,7 @@ key can have the following five values:

  • CONFIRM_NOTIFICATIONS—acknowledges that you received the transaction information for a purchase or refund.
  • RESTORE_TRANSACTIONS—retrieves a user's transaction history for managed + href="{@docRoot}google/play/billing/billing_admin.html#billing-purchase-type">managed purchases.
  • @@ -529,7 +529,7 @@ three keys that are required for all requests: BILLING_REQUEST, API_VERSION, and PACKAGE_NAME. If you are offering subscriptions in your app, set the API_VERSION key to a value of "2", to confirm that In-app Billing v2 is available. For an examnple, see -Subscriptions.

    +Subscriptions.

    The CHECK_BILLING_SUPPORTED request returns a synchronous {@link android.os.Bundle} response, which contains only a single key: RESPONSE_CODE. The @@ -577,7 +577,7 @@ Help topic.

    You must specify four keys in the request {@link android.os.Bundle}. The following code sample shows how to set these keys and make a purchase request for a single in-app item. In the sample, mProductId is the Google Play product ID of an in-app item (which is listed in the -application's product +application's product list), and mService is an instance of the MarketBillingService interface.

    @@ -672,7 +672,7 @@ use to retrieve the transaction details for the REQUEST_PURCHASE re

    Note: The Google Play application also sends an IN_APP_NOTIFY for refunds. For more information, see Handling +href="{@docRoot}google/play/billing/billing_overview.html#billing-action-notify">Handling IN_APP_NOTIFY messages.

    Because the purchase process is not instantaneous and can take several seconds (or more), you @@ -855,7 +855,7 @@ android.content.BroadcastReceiver}. To see an example of how you can send and re messages, see the BillingReceiver.java and BillingService.java files in the sample application. You can use these samples as a basis for your own implementation. However, if you use any of the code from the sample application, be sure you follow the guidelines in Security and Design.

    +href="{@docRoot}google/play/billing/billing_best_practices.html">Security and Design.

    Creating a BroadcastReceiver

    @@ -868,19 +868,19 @@ android.content.BroadcastReceiver} that can handle the following intents:

    This broadcast intent contains a Google Play response code, and is sent after you make an in-app billing request. For more information about the response codes that are sent with this response, see Google Play Response + href="{@docRoot}google/play/billing/billing_reference.html#billing-codes">Google Play Response Codes for In-app Billing.

  • com.android.vending.billing.IN_APP_NOTIFY

    This response indicates that a purchase has changed state, which means a purchase succeeded, was canceled, or was refunded. For more information about notification messages, see In-app Billing + href="{@docRoot}google/play/billing/billing_reference.html#billing-intents">In-app Billing Broadcast Intents

  • com.android.vending.billing.PURCHASE_STATE_CHANGED

    This broadcast intent contains detailed information about one or more transactions. For more information about purchase state messages, see In-app Billing + href="{@docRoot}google/play/billing/billing_reference.html#billing-intents">In-app Billing Broadcast Intents

  • @@ -989,7 +989,7 @@ local service (discussed in the next section). The BillingReceiver.javaSecurity and Design .

    +href="{@docRoot}google/play/billing/billing_best_practices.html">Security and Design .

    Verifying Signatures and Nonces

    @@ -1028,7 +1028,7 @@ code shows some simple methods you can use to do this.

    PURCHASE_STATE_CHANGED broadcast intent. The Security.java file in the sample application shows you how to do this. If you use this file as a basis for your own security implementation, be sure to follow the guidelines in Security and Design and +href="{@docRoot}google/play/billing/billing_best_practices.html">Security and Design and obfuscate your code.

    You will need to use your Google Play public key to perform the signature verification. The @@ -1075,7 +1075,7 @@ sample application provides an example database (PurchaseDatabase.java); however database has been simplified for clarity and does not exhibit the security best practices that we recommend. If you have a remote server, we recommend that you store purchase information on your server instead of in a local database on a device. For more information about security best -practices, see Security and +practices, see Security and Design.

    Note: If you store any purchase information on a device, be sure to diff --git a/docs/html/google/play/billing/billing_overview.jd b/docs/html/google/play/billing/billing_overview.jd index 82f6cf4e7443..4b2a64313e89 100755 --- a/docs/html/google/play/billing/billing_overview.jd +++ b/docs/html/google/play/billing/billing_overview.jd @@ -21,19 +21,19 @@ parent.link=index.html

    Downloads

      -
    1. Sample +
    2. Sample Application

    See also

      -
    1. Implementing In-app +
    2. Implementing In-app Billing
    3. -
    4. Security and +
    5. Security and Design
    6. -
    7. Testing In-app Billing
    8. -
    9. Administering In-app +
    10. Testing In-app Billing
    11. +
    12. Administering In-app Billing
    13. -
    14. In-app Billing +
    15. In-app Billing Reference
    @@ -156,7 +156,7 @@ messaging that takes place between your application and the Google Play applicat interface. This interface is defined in an Android Interface Definition Language file (IMarketBillingService.aidl). You can download this AIDL +href="{@docRoot}google/play/billing/billing_integrate.html#billing-download">download this AIDL file with the in-app billing sample application.

    The sendBillingRequest() method has a single {@link android.os.Bundle} parameter. @@ -164,7 +164,7 @@ The Bundle that you deliver must include several key-value pairs that specify va the request, such as the type of billing request you are making, the item that is being purchased and its type, and the application that is making the request. For more information about the Bundle keys that are sent with a request, see In-app Billing +href="{@docRoot}google/play/billing/billing_reference.html#billing-interface">In-app Billing Service Interface.

    One of the most important keys that every request Bundle must have is the @@ -198,9 +198,9 @@ requests:

  • RESTORE_TRANSACTIONS

    This request retrieves a user's transaction status for managed + href="{@docRoot}google/play/billing/billing_admin.html#billing-purchase-type">managed purchases and subscriptions. + href="{@docRoot}google/play/billing/billing_admin.html#billing-purchase-type">subscriptions. You should send this request only when you need to retrieve a user's transaction status, which is usually only when your application is reinstalled or installed for the first time on a device.

    @@ -240,7 +240,7 @@ include the following:

    request. This response is not used to report any purchase state changes (such as refund or purchase information). For more information about the response codes that are sent with this response, see Server Response Codes + href="{@docRoot}google/play/billing/billing_reference.html#billing-codes">Server Response Codes for In-app Billing.

  • com.android.vending.billing.IN_APP_NOTIFY @@ -276,7 +276,7 @@ string for a subscription item is shown below:

    For more information about the fields in this JSON string, see In-app Billing +href="{@docRoot}google/play/billing/billing_reference.html#billing-intents">In-app Billing Broadcast Intents.

    Messaging sequence

    @@ -435,7 +435,7 @@ application can handle this message the same way it handles the response from an application-initiated REQUEST_PURCHASE message, so that ultimately your application receives a PURCHASE_STATE_CHANGED broadcast intent message that includes information about the item that has been purchased. This applies only to items that have their purchase type set +href="{@docRoot}google/play/billing/billing_admin.html#billing-purchase-type">purchase type set to "managed per user account."

    In the second case, your application can receive an IN_APP_NOTIFY broadcast intent @@ -478,7 +478,7 @@ application. When your application receives the JSON string, you need to verify the signature of the JSON string.

    For more information about best practices for security and design, see Security and Design.

    +href="{@docRoot}google/play/billing/billing_best_practices.html">Security and Design.

    In-app Billing Requirements and Limitations

    diff --git a/docs/html/google/play/billing/billing_reference.jd b/docs/html/google/play/billing/billing_reference.jd index c5541fa2e7a1..e78c99ff59ac 100755 --- a/docs/html/google/play/billing/billing_reference.jd +++ b/docs/html/google/play/billing/billing_reference.jd @@ -15,20 +15,20 @@ parent.link=index.html

    Downloads

      -
    1. Sample +
    2. Sample Application

    See also

      -
    1. Overview of In-app +
    2. Overview of In-app Billing
    3. -
    4. Implementing In-app +
    5. Implementing In-app Billing
    6. -
    7. Security and +
    8. Security and Design
    9. -
    10. Testing In-app +
    11. Testing In-app Billing
    12. -
    13. Administering In-app +
    14. Administering In-app Billing
    @@ -114,7 +114,7 @@ purchase an item from yourself, which is not allowed by Google Wallet.

    The following section describes the interface for Google Play's in-app billing service. The interface is defined in the IMarketBillingService.aidl file, which is included with the in-app billing sample +href="{@docRoot}google/play/billing/billing_integrate.html#billing-download">sample application.

    The interface consists of a single request method sendBillingRequest(). This method takes a single {@link android.os.Bundle} parameter. The Bundle parameter includes several key-value @@ -233,7 +233,7 @@ pairs, which are summarized in table 2.

  • RESTORE_TRANSACTIONS

    This request retrieves a user's transaction status for managed purchases (see Choosing a + href="{@docRoot}google/play/billing/billing_admin.html#billing-purchase-type">Choosing a Purchase Type for more information). You should send this message only when you need to retrieve a user's transaction status, which is usually only when your application is reinstalled or installed for the first time on a device.

    @@ -304,7 +304,7 @@ each in-app billing request type.

    Play application. These broadcast intents inform your application about in-app billing actions that have occurred. Your application must implement a {@link android.content.BroadcastReceiver} to receive these broadcast intents, such as the BillingReceiver that's shown in the in-app -billing sample +billing sample application.

    com.android.vending.billing.RESPONSE_CODE

    @@ -442,7 +442,7 @@ validity of a specific subscription at any time or cancel a subscription. The API is designed to be used from your backend servers as a way of securely managing subscriptions, as well as extending and integrating subscriptions with other services. See +href="{@docRoot}google/play/billing/billing_subscriptions.html#play-dev-api"> Google Play Android Developer API for more information.

    In-app Billing API Versions

    @@ -457,7 +457,7 @@ Versions are specified in the API_VERSION key of the Bundle object passed in the sendBillingRequest(), which is defined in the defined in the IMarketBillingService.aidl file, which is included with the in-app billing +href="{@docRoot}google/play/billing/billing_integrate.html#billing-download"> sample application. For more information, see In-app Billing Service Interface.

    In-app Billing version 2

    diff --git a/docs/html/google/play/billing/billing_subscriptions.jd b/docs/html/google/play/billing/billing_subscriptions.jd index 68eda196e3fe..5980d835973d 100755 --- a/docs/html/google/play/billing/billing_subscriptions.jd +++ b/docs/html/google/play/billing/billing_subscriptions.jd @@ -48,19 +48,19 @@ parent.link=index.html

    Downloads

      -
    1. Sample Application
    2. +
    3. Sample Application

    See also

      -
    1. Overview of In-app +
    2. Overview of In-app Billing
    3. -
    4. Security and +
    5. Security and Design
    6. -
    7. Testing In-app +
    8. Testing In-app Billing
    9. -
    10. Administering In-app +
    11. Administering In-app Billing
    12. -
    13. In-app Billing +
    14. In-app Billing Reference
    @@ -78,7 +78,7 @@ subscriptions using the standard communication model, data structures, and user interactions as for other in-app products.subscriptions. Because the implementation of subscriptions follows the same path as for other in-app products, details are provided outside of this document, starting with the In-app Billing +href="{@docRoot}google/play/billing/billing_overview.html">In-app Billing Overview.

    This document is focused on highlighting implementation details that are @@ -395,7 +395,7 @@ other in-app products.subscriptions.

    The full implementation details for In-app Billing are provided outside of this document, starting with the In-app Billing +href="{@docRoot}google/play/billing/billing_overview.html">In-app Billing Overview. This document is focused on highlighting implementation details that are specific to subscriptions, along with some strategies for the associated billing and business models.

    @@ -407,7 +407,7 @@ associated billing and business models.

    subscriptions, an updated version of the In-app Billing sample app is available. You can download the sample app from the Android SDK repository using the Android SDK Manager. For details, see +href="{@docRoot}google/play/billing/billing_integrate.html#billing-download"> Downloading the Sample Application.

    Application model

    @@ -426,7 +426,7 @@ Play. Also recommended are a response Handler for processing notifications, errors, and status messages, and an observer for sending callbacks to your application as needed. All of these components and their interactions are described in full in the In-app Billing +href="{@docRoot}google/play/billing/billing_overview.html">In-app Billing Overview and related documents.

    To initiate different types of billing communication with Google Play, your @@ -470,7 +470,7 @@ is shown below.

    pass it to your backend servers, which can then use it to query the billing status or cancel the subscription remotely. If your app will store the token locally, please read the Security and +href="{@docRoot}google/play/billing/billing_best_practices.html">Security and Design document for best practices for maintaining the security of your data.

    @@ -565,7 +565,7 @@ transaction..

    The REQUEST_PURCHASE includes a Bundle containing the item details, as described in the In-app Billing +href="{@docRoot}google/play/billing/billing_overview.html">In-app Billing Overview. For a subscription, the Bundle must also specify:

      @@ -581,7 +581,7 @@ Overview. For a subscription, the Bundle must also specify:

      RESPONSE_CODE, PURCHASE_INTENT, and REQUEST_ID. Your app uses the PURCHASE_INTENT to launch the checkout UI and the message flow proceeds exactly as described in Messaging sequence.

      Here’s how the sample app initiates a purchase for a subscription, where @@ -638,7 +638,7 @@ the subscriptions that the user has purchased.

      The process for restoring subscriptions transactions is the same as described in Messaging sequence. Your app sends a RESTORE_TRANSACTIONS request to Google Play. Google Play sends two broadcast intents as asynchronous responses — a RESPONSE_CODE @@ -654,7 +654,7 @@ restore locally.

      Your app can store the restored purchase state and other transaction details in the way that best meets your needs. Your app can use it later to check the subscription validity, although please read the Security and +href="{@docRoot}google/play/billing/billing_best_practices.html">Security and Design document for best practices for maintaining the security of your data.

      @@ -788,7 +788,7 @@ your app does not need to grant further access to the subscription content.

      For subscriptions, you make the same types of modifications to your app as are described in +href="{@docRoot}google/play/billing/billing_integrate.html#billing-implement"> Modifying your Application Code.

      Note that, in your UI that lets users view and select subscriptions for @@ -816,7 +816,7 @@ subscription product:

    • Additional currency pricing (can be auto-filled)
    -

    For details, please see Administering +

    For details, please see Administering In-app Billing.

    diff --git a/docs/html/google/play/billing/billing_testing.jd b/docs/html/google/play/billing/billing_testing.jd index e2d4a014cbbf..edf7e70e710c 100755 --- a/docs/html/google/play/billing/billing_testing.jd +++ b/docs/html/google/play/billing/billing_testing.jd @@ -13,20 +13,20 @@ parent.link=index.html

    Downloads

      -
    1. Sample +
    2. Sample Application

    See also

      -
    1. Overview of In-app +
    2. Overview of In-app Billing
    3. -
    4. Implementing In-app +
    5. Implementing In-app Billing
    6. -
    7. Security and +
    8. Security and Design
    9. -
    10. Administering In-app +
    11. Administering In-app Billing
    12. -
    13. In-app Billing +
    14. In-app Billing Reference
    @@ -94,7 +94,7 @@ reserved product IDs.

    request through your Google Wallet account, a refund message is sent to your application by Google Play. This occurs only when Google Play gets notification from Google Wallet that a refund has been made. For more information about refunds, see Handling + href="{@docRoot}google/play/billing/billing_overview.html#billing-action-notify">Handling IN_APP_NOTIFY messages and In-app Billing Pricing.

    @@ -108,7 +108,7 @@ reserved product IDs.

    In some cases, the reserved items may return signed static responses, which lets you test signature verification in your application. To test signature verification with the special reserved product IDs, you may need to set up test accounts or +href="{@docRoot}google/play/billing/billing_admin.html#billing-testing-setup">test accounts or upload your application as a unpublished draft application. Table 1 shows you the conditions under which static responses are signed.

    @@ -218,7 +218,7 @@ testing.

    register at least one test account on the Google Play publisher site. You cannot use your developer account to test the complete in-app purchase process because Google Wallet does not let you buy items from yourself. If you have not set up test accounts before, see Setting up test +href="{@docRoot}google/play/billing/billing_admin.html#billing-testing-setup">Setting up test accounts.

    Also, a test account can purchase an item in your product list only if the item is published. The @@ -243,7 +243,7 @@ actual payouts to your merchant account.

  • Add items to the application's product list.

    Make sure that you publish the items (the application can remain unpublished). See Creating a product + href="{@docRoot}google/play/billing/billing_admin.html#billing-catalog">Creating a product list to learn how to do this.

  • Install your application on an Android-powered device. @@ -256,7 +256,7 @@ actual payouts to your merchant account.

  • Make one of your test accounts the primary account on your device.

    To perform end-to-end testing of in-app billing, the primary account on your device must be one of the test accounts + href="{@docRoot}google/play/billing/billing_admin.html#billing-testing-setup">test accounts that you registered on the Google Play site. If the primary account on your device is not a test account, you must do a factory reset of the device and then sign in with one of your test accounts. To perform a factory reset, do the following:

    diff --git a/docs/html/google/play/billing/index.jd b/docs/html/google/play/billing/index.jd index 134140d3d62d..80ba2d4ab275 100755 --- a/docs/html/google/play/billing/index.jd +++ b/docs/html/google/play/billing/index.jd @@ -6,25 +6,25 @@ page.title=In-app Billing

    Topics

      -
    1. Overview of In-app +
    2. Overview of In-app Billing
    3. -
    4. Implementing In-app +
    5. Implementing In-app Billing
    6. -
    7. Subscriptions
    8. -
    9. Security and - Design
    10. Testing In-app +
    11. Subscriptions
    12. +
    13. Security and + Design
    14. Testing In-app Billing
    15. -
    16. Administering In-app +
    17. Administering In-app Billing

    Reference

      -
    1. In-app Billing +
    2. In-app Billing Reference

    Downloads

      -
    1. Sample +
    2. Sample Application
    @@ -43,7 +43,7 @@ and features, and more. You can use In-app Billing to sell products as

    @@ -71,7 +71,7 @@ business logic you might use to implement in-app billing.

    Important: Although the sample application is a working example of how you can implement in-app billing, we strongly recommend that you modify and obfuscate the sample code before you use it in a production application. For more information, see -Security and Design.

    +Security and Design.

    @@ -84,29 +84,29 @@ obfuscate the sample code before you use it in a production application. For mor applications, read the following documents:

    -
    Overview of In-app +
    Overview of In-app Billing
    Learn how the service works and what a typical in-app billing implementation looks like.
    -
    Implementing +
    Implementing In-app Billing
    Use this step-by-step guide to start incorporating in-app billing into your application. The instructions apply to both one-time and subscription purchases.
    -
    Subscriptions
    +
    Subscriptions
    Learn how subscriptions work and how to implement support for them in your app.
    -
    Security +
    Security and Design
    Review these best practices to help ensure that your in-app billing implementation is secure and well designed.
    -
    Testing In-app +
    Testing In-app Billing
    Understand how the in-app billing test tools work and learn how to test your in-app billing implementation.
    -
    Administering +
    Administering In-app Billing
    Learn how to set up your product list, register test accounts, and handle refunds.
    -
    In-app Billing +
    In-app Billing Reference
    Get detailed information about Google Play response codes and the in-app billing interface.
    diff --git a/docs/html/google/play/dist.jd b/docs/html/google/play/dist.jd index 7e6031533475..20523f6ec740 100644 --- a/docs/html/google/play/dist.jd +++ b/docs/html/google/play/dist.jd @@ -17,7 +17,7 @@ page.title=Google Play Distribution and Licensing

    Make sure your app gets to the right users by filtering on a wide range of characteristics such as platform versions and hardware features. -

    Learn more »

    +

    Learn more »

    @@ -27,7 +27,7 @@ page.title=Google Play Distribution and Licensing

    Distribute different APKs based on a variety of properties such as platform version, screen size, and GLES texture compression support. -

    Learn more »

    +

    Learn more »

    @@ -39,7 +39,7 @@ page.title=Google Play Distribution and Licensing Tap into Google's content delivery services by serving up to 4GB of assets for free. Provide users with high-fidelity graphics, media files, or other large assets that are required by your app. -

    Learn more » +

    Learn more »
    @@ -47,6 +47,6 @@ page.title=Google Play Distribution and Licensing Application Licensing

    Protect your revenue streams and integrate policies for usage into your app. -

    Learn more » +

    Learn more »
    \ No newline at end of file diff --git a/docs/html/google/play/expansion-files.jd b/docs/html/google/play/expansion-files.jd index 9cd1bb142278..271c19210ffa 100644 --- a/docs/html/google/play/expansion-files.jd +++ b/docs/html/google/play/expansion-files.jd @@ -52,8 +52,8 @@ page.title=APK Expansion Files

    See also

      -
    1. Application Licensing
    2. -
    3. Multiple +
    4. Application Licensing
    5. +
    6. Multiple APK Support
    @@ -216,7 +216,7 @@ already saved on the device.
  • If yes, your app is ready to go.
  • If no, your app must download the expansion files over HTTP from Google Play. Your app must send a request to the Google Play client using the Google Play's Application Licensing service, which +href="{@docRoot}google/play/licensing/index.html">Application Licensing service, which responds with the name, file size, and URL for each expansion file. With this information, you then download the files and save them to the proper storage location.
  • @@ -243,7 +243,7 @@ application:

    Space is precious and you should keep your total application size as small as possible. If your app uses more than 50MB in order to provide multiple versions of your graphic assets for multiple screen densities, consider instead publishing multiple APKs in which each APK +href="{@docRoot}google/play/publishing/multiple-apks.html">multiple APKs in which each APK contains only the assets required for the screens that it targets.
  • Determine which application resources to separate from your APK and package them in a file to use as the main expansion file. @@ -260,7 +260,7 @@ Library.

  • Add logic to your application's main activity that checks whether the expansion files are on the device upon start-up. If the files are not on the device, use Google Play's Application Licensing service to request URLs +href="{@docRoot}google/play/licensing/index.html">Application Licensing service to request URLs for the expansion files, then download and save them.

    To greatly reduce the amount of code you must write and ensure a good user experience during the download, we recommend you use the Downloader @@ -293,16 +293,16 @@ provide the URLs for your expansion files if the application was installed by ot provides for each file is unique for every download and each one expires shortly after it is given to your application.

  • If you update your application with a new APK or upload multiple APKs for the same +href="{@docRoot}google/play/publishing/multiple-apks.html">multiple APKs for the same application, you can select expansion files that you've uploaded for a previous APK. The expansion file's name does not change—it retains the version received by the APK to which the file was originally associated.
  • If you use expansion files in combination with multiple APKs in order to +href="{@docRoot}google/play/publishing/multiple-apks.html">multiple APKs in order to provide different expansion files for different devices, you still must upload separate APKs for each device in order to provide a unique {@code versionCode} -value and declare different filters for +value and declare different filters for each APK.
  • You cannot issue an update to your application by changing the expansion files alone—you must upload a new APK to update your app. If your changes only @@ -334,7 +334,7 @@ time it installs or updates the APK. This way, the expansion files are available application launches for the first time. However, in some cases your app must download the expansion files itself by requesting them from a URL provided to you in a response from Google Play's Application Licensing service.

    +href="{@docRoot}google/play/licensing/index.html">Application Licensing service.

    The basic logic you need to download your expansion files is the following:

    @@ -347,7 +347,7 @@ href="#StorageLocation">shared storage location (in the
  • If the expansion files are not there:
    1. Perform a request using Google Play's Application Licensing to get your +href="{@docRoot}google/play/licensing/index.html">Application Licensing to get your app's expansion file names, sizes, and URLs.
    2. Use the URLs provided by Google Play to download the expansion files and save the expansion files. You must save the files to the

      If your application is free (not a paid app), then you probably haven't used the Application Licensing service. It's primarily +href="{@docRoot}google/play/licensing/index.html">Application Licensing service. It's primarily designed for you to enforce licensing policies for your application and ensure that the user has the right to use your app (he or she rightfully paid for it on Google Play). In order to facilitate the @@ -410,7 +410,7 @@ download your expansion files. The information in the following sections explain the library into your application.

      If you'd rather develop your own solution to download the expansion files using the Google -Play URLs, you must follow the Application +Play URLs, you must follow the Application Licensing documentation to perform a license request, then retrieve the expansion file names, sizes, and URLs from the response extras. You should use the {@code APKExpansionPolicy} class (included in the License Verification Library) as your licensing @@ -572,11 +572,11 @@ DownloaderService} class and override three methods to provide specific applicat

      {@code getPublicKey()}
      This must return a string that is the Base64-encoded RSA public key for your publisher account, available from the profile page on the Developer Console (see Setting Up for Licensing).
      +href="{@docRoot}google/play/licensing/setting-up.html">Setting Up for Licensing).
      {@code getSALT()}
      This must return an array of random bytes that the licensing {@code Policy} uses to create an {@code +href="{@docRoot}google/play/licensing/adding-licensing.html#impl-Obfuscator">{@code Obfuscator}. The salt ensures that your obfuscated {@link android.content.SharedPreferences} file in which your licensing data is saved will be unique and non-discoverable.
      {@code getAlarmReceiverClassName()}
      @@ -925,7 +925,7 @@ expansion files:

      For more information about how to use the {@code APKExpansionPolicy} when you're not using the Downloader Library, see the documentation for Adding Licensing to Your App, +href="{@docRoot}google/play/licensing/adding-licensing.html">Adding Licensing to Your App, which explains how to implement a license policy such as this one.

      diff --git a/docs/html/google/play/filters.jd b/docs/html/google/play/filters.jd index 3db9cb634d06..eeb2215e629a 100644 --- a/docs/html/google/play/filters.jd +++ b/docs/html/google/play/filters.jd @@ -6,19 +6,18 @@ page.title=Filters on Google Play

      Quickview

        -
      • Google Play applies filters that control which Android-powered devices can access your -application when the user is visiting the store.
      • -
      • Filtering is determined by comparing device configurations that you declare in you app's -manifest file to the configurations defined by the device, as well as other factors.
      +
    3. Google Play applies filters to control which Android devices can download +your application from the store.
    4. +
    5. Filtering ensures that your apps are available only to users whose devices meet your app's compatibility requirements. +
    6. Filtering is determined by the configuration requirements that you declare in you app's +manifest file, as well as other factors.
    7. +

      In this document

      1. How Filters Work on Google Play
      2. Filtering based on Manifest Elements -
          -
        1. Advanced manifest filters
        2. -
      3. Other Filters
      4. Publishing Multiple APKs with Different Filters
      5. @@ -44,53 +43,44 @@ href="{@docRoot}guide/topics/manifest/uses-permission-element.html"><uses-per href="{@docRoot}guide/topics/manifest/uses-sdk-element.html"><uses-sdk>
      -
      - -
      - -

      Interested in publishing your app on Google Play?

      -

      Go to Google Play to create a publisher -account and upload your app.

      -
      - +

      When a user searches or browses for apps to download on Google Play, the +results are filtered based on which applications are compatible with the device. +For example, if an app requires a camera, Google Play would not show the app to devices +that do not have a camera. This filtering helps developers manage the +distribution of their apps and helps ensure the best possible experience for +users.

      -

      When a user searches or browses on Google Play on an Android device, the results are filtered -based on which applications are compatible with that device. For example, if an application -requires a camera (as specified in the application manifest file), then Google Play will not show -the app on any device that does not have a camera.

      - -

      Declarations in the manifest file that are compared to the device's configuration is not the -only part of how applications are filtered. Filtering might also occur due to the user's country and -carrier, the presence or absence of a SIM card, and other factors.

      +

      Filtering in Google Play is based on several types of app metadata and +configuration settings, including manifest declarations, required +libraries,architecture dependencies, and distribution controls set in the Google +Play Developer Console, such as geographic targeting, pricing, and more.

      -

      Changes to the Google Play filters are independent of changes to the Android platform itself. -This document is updated periodically to reflect any changes that affect the way Google Play -filters applications.

      +

      Google Play filtering is based in part on manifest declarations and other +aspects of the Android framework, but actual filtering behaviors are distinct +from the framework and are not bound to specific API levels. This document +specifies the current filtering rules used by Google Play.

      How Filters Work on Google Play

      Google Play uses the filter restrictions described below to determine whether to show your application to a user who is browsing or searching for -applications from the Google Play app. When determining whether to display your app, -Google Play checks the device's hardware and software configuration, as well as it's -carrier, location, and other characteristics. It then compares those against the -restrictions and dependencies expressed by the application's -manifest file and publishing details. If the application is -compatible with the device according to the filter rules, Google Play displays the -application to the user. Otherwise, Google Play hides your application from search -results and category browsing, even if a user specifically requests -the app by clicking a deep link that points directly to the app's ID within Google Play..

      - -

      Note: When users browse the Google Play web site, they can see all published -applications. The Google Play web site compares the application requirements to each of the -user's registered devices for compatibility, though, and only allows them to install the application -if it's compatible with their device.

      +applications from the Google Play app.

      + +

      When determining whether to display your app, Google Play checks the device's +hardware and software requirement, as well as it's carrier, location, and other +characteristics. It then compares those against the restrictions and +dependencies expressed by the application's manifest file and publishing +details.

      + +

      If the application is compatible with the device according to the filter +rules, Google Play displays the application to the user. Otherwise, Google Play +hides your application from search results and category browsing, even if a user +specifically requests the app by clicking a deep link that points directly to +the app's ID within Google Play.

      You can use any combination of the available filters for your app. For example, you can set a minSdkVersion requirement of "4" and set smallScreens="false" @@ -103,8 +93,15 @@ change between versions. For example, if a user has installed your application a update that makes the app invisible to the user, the user will not see that an update is available.

      +

      Filtering on the Google Play web site

      + +

      When users browse the Google Play web +site, they can see all published applications. The Google Play web site +compares the application requirements to each of the user's registered devices +for compatibility, though, and only allows them to install the application if +it's compatible with their device.

      -

      Filtering based on Manifest Elements

      +

      Filtering based on the App Manifest

      Most filters are triggered by elements within an application's manifest file,

      If you need more information about how to publish multiple APKs on Google Play, read Multiple APK Support.

      +href="{@docRoot}google/play/publishing/multiple-apks.html">Multiple APK Support.

      diff --git a/docs/html/google/play/licensing/adding-licensing.jd b/docs/html/google/play/licensing/adding-licensing.jd index 4a45de398050..15d1e922faf2 100644 --- a/docs/html/google/play/licensing/adding-licensing.jd +++ b/docs/html/google/play/licensing/adding-licensing.jd @@ -72,11 +72,11 @@ most applications).

      The sections below describe these tasks. When you are done with the integration, you should be able to compile your application successfully and you can begin testing, as described in Setting Up the Test +href="{@docRoot}google/play/licensing/setting-up.html#test-env">Setting Up the Test Environment.

      For an overview of the full set of source files included in the LVL, see Summary of LVL Classes +href="{@docRoot}google/play/licensing/licensing-reference.html#lvl-summary">Summary of LVL Classes and Interfaces.

      @@ -224,7 +224,7 @@ in local persistent storage. cached response is valid, rather than making a request to the licensing server. Setting the response validity according to the server-provided VT extra is highly recommended. See Server Response Extras +href="{@docRoot}google/play/licensing/licensing-reference.html#extras">Server Response Extras for more information.
    8. Uses an exponential backoff period, if retrying any requests the result in errors. Note that the Google Play client automatically retries failed @@ -247,7 +247,7 @@ server-provided settings is straightforward and making use of them is highly recommended. See the ServerManagedPolicy implementation for an example of how to extract and use the extras. For a list of server settings and information about how to use them, see Server Response +href="{@docRoot}google/play/licensing/licensing-reference.html#extras">Server Response Extras.

      ServerManagedPolicy

      @@ -261,7 +261,7 @@ settings to the responses, to help the application manage licensing effectively.

      See Server Response Extras +href="{@docRoot}google/play/licensing/licensing-reference.html#extras">Server Response Extras for a list of settings and ServerManagedPolicy.java for information about how a {@code Policy} can use the extras.

      @@ -294,7 +294,7 @@ retry count, among others. ServerManagedPolicy extracts the values from the license response in its processServerResponse() method and checks them in its allowAccess() method. For a list of the server-provided settings used by ServerManagedPolicy, see Server Response +href="{@docRoot}google/play/licensing/licensing-reference.html#extras">Server Response Extras.

      For convenience, best performance, and the benefit of using license settings @@ -697,9 +697,9 @@ private class MyLicenseCheckerCallback implements LicenseCheckerCallback {

      Additionally, you should implement the applicationError() method, which the LVL calls to let your application handle errors that are not retryable. For a list of such errors, see Server +href="{@docRoot}google/play/licensing/licensing-reference.html#server-response-codes">Server Response Codes in the Licensing Reference. You can implement +href="{@docRoot}google/play/licensing/licensing-reference.html">Licensing Reference. You can implement the method in any way needed. In most cases, the method should log the error code and call dontAllow().

      diff --git a/docs/html/google/play/licensing/index.jd b/docs/html/google/play/licensing/index.jd index d393738bac17..a13be105973f 100644 --- a/docs/html/google/play/licensing/index.jd +++ b/docs/html/google/play/licensing/index.jd @@ -31,25 +31,25 @@ on Google Play. However, any application (including free apps) may use the licen to initiate the download of an APK expansion file. In which case, the request that your application sends to the licensing service is not to check whether the user paid for the app, but to request the URL of the expansion files. For information about downloading expansion files for your application, -read the guide to APK Expansion Files.

      +read the guide to APK Expansion Files.

      To learn more about Google Play's application licensing service and start integrating it into your applications, read the following documents:

      -
      Licensing +
      Licensing Overview
      Describes how the service works and what a typical licensing implementation looks like.
      -
      Setting Up for +
      Setting Up for Licensing
      Explains how to set up your Google Play account, development environment, and testing environment in order to add licensing to your app.
      -
      Adding +
      Adding Licensing to Your App
      Provides a step-by-step guide to add licensing verification to your application.
      -
      Licensing +
      Licensing Reference
      Provides detailed information about the licensing library's classes and the service response codes.
      diff --git a/docs/html/google/play/licensing/licensing-reference.jd b/docs/html/google/play/licensing/licensing-reference.jd index d3d522460ee3..79c818c96661 100644 --- a/docs/html/google/play/licensing/licensing-reference.jd +++ b/docs/html/google/play/licensing/licensing-reference.jd @@ -230,7 +230,7 @@ implementation.

      Note: As documented in +href="{@docRoot}google/play/licensing/setting-up.html#test-env"> Setting Up The Testing Environment, the response code can be manually overridden for the application developer and any registered test users via the Google Play publisher site. @@ -251,13 +251,13 @@ testing purposes.

      period and provide other information, The licensing server includes several pieces of information in the license responses. Specifically, the service provides recommended values for the application's license validity period, retry grace period, maximum allowable retry count, and other -settings. If your application uses APK +settings. If your application uses APK expansion files, the response also includes the file names, sizes, and URLs. The server appends the settings as key-value pairs in the license response "extras" field.

      Any {@code Policy} implementation can extract the extras settings from the license response and use them as needed. The LVL default {@code Policy} implementation, {@code +href="{@docRoot}google/play/licensing/adding-licensing.html#ServerManagedPolicy">{@code ServerManagedPolicy}, serves as a working implementation and an illustration of how to obtain, store, and use the settings.

      diff --git a/docs/html/google/play/licensing/overview.jd b/docs/html/google/play/licensing/overview.jd index 467a3a2c151c..11237484c59c 100644 --- a/docs/html/google/play/licensing/overview.jd +++ b/docs/html/google/play/licensing/overview.jd @@ -206,7 +206,7 @@ secure.
    9. functions when run on a device that does not offer Google Play.
    10. You can implement licensing controls for a free app, but only if you're using the service to provide APK expansion files.
    11. +href="{@docRoot}google/play/expansion-files.html">APK expansion files. @@ -237,7 +237,7 @@ across all compatible devices, locked or unlocked, that run Android 1.5 or higher version of the platform.

      To begin adding application licensing to your application, continue to Setting Up for Licensing.

      +href="{@docRoot}google/play/licensing/setting-up.html">Setting Up for Licensing.

      diff --git a/docs/html/google/play/licensing/setting-up.jd b/docs/html/google/play/licensing/setting-up.jd index 80a44192c754..77e9d09435ef 100644 --- a/docs/html/google/play/licensing/setting-up.jd +++ b/docs/html/google/play/licensing/setting-up.jd @@ -102,7 +102,7 @@ responses, see Setting Up a Testing Environment, below.

    The sections below describe these tasks. When you are done with setup, -you can begin Adding +you can begin Adding Licensing to Your App.

    To get started, you need to set up a proper runtime environment on which @@ -358,7 +358,7 @@ LVL's library/src/com directory into your application's

    If you add the LVL sources directly to your application, you can skip the next section and start working with the library, as described in Adding +href="{@docRoot}google/play/licensing/adding-licensing.html">Adding Licensing to Your App.

    @@ -483,9 +483,9 @@ test in your application.

    In general, you should make sure to test your application's licensing implementation with every response code available in the Test Response menu. For a description of the codes, see Server +href="{@docRoot}google/play/licensing/licensing-reference.html#server-response-codes">Server Response Codes in the Licensing Reference.

    +href="{@docRoot}google/play/licensing/licensing-reference.html">Licensing Reference.

    Figure 4. The Licensing @@ -506,7 +506,7 @@ sign using either your publisher account or one of the test accounts that you have set up. For more information about test accounts, see the next section.

    See Server +href="{@docRoot}google/play/licensing/licensing-reference.html#server-response-codes">Server Response Codes for a list of test responses available and their meanings.

    @@ -695,7 +695,7 @@ publisher account or test account each time you wipe data when restarting the emulator.

    Once you've completed the setup procedures, continue to Adding Licensing to Your App.

    +href="{@docRoot}google/play/licensing/adding-licensing.html">Adding Licensing to Your App.

    diff --git a/docs/html/google/play/publishing/multiple-apks.jd b/docs/html/google/play/publishing/multiple-apks.jd index 0619dfc62ac3..fc9e0f9c5181 100644 --- a/docs/html/google/play/publishing/multiple-apks.jd +++ b/docs/html/google/play/publishing/multiple-apks.jd @@ -44,8 +44,8 @@ support all desired devices with a single APK
  • See also

      -
    1. APK Expansion Files
    2. -
    3. Filters on Google Play
    4. +
    5. APK Expansion Files
    6. +
    7. Filters on Google Play
    8. Supporting Multiple Screens
    9. Support Library
    10. Android API Levels
    11. @@ -194,7 +194,7 @@ following sections describe more about how it works.

      Supported filters

      Which devices receive each APK is determined by Google Play filters that are specified by +href="{@docRoot}google/play/filters.html">Google Play filters that are specified by elements in the manifest file of each APK. However, Google Play allows you to publish multiple APKs only when each APK uses filters to support a variation of the following device characteristics:

      @@ -293,7 +293,7 @@ higher, as per the previous note).

      Other manifest elements that enable Google Play filters—but are not +href="{@docRoot}google/play/filters.html">Google Play filters—but are not listed above—are still applied for each APK as usual. However, Google Play does not allow you to publish separate APKs based on variations of those device characteristics. Thus, you cannot publish multiple APKs if the above listed filters are the same for each APK (but the APKs differ diff --git a/docs/html/guide/appendix/install-location.jd b/docs/html/guide/appendix/install-location.jd index 19c4b3900ef1..50f6d27b49f1 100644 --- a/docs/html/guide/appendix/install-location.jd +++ b/docs/html/guide/appendix/install-location.jd @@ -174,7 +174,7 @@ external storage, it can never receive this broadcast.

      Copy Protection
      Your application cannot be installed to a device's SD card if it uses Google Play's Copy Protection feature. However, if you use Google Play's - Application Licensing instead, your + Application Licensing instead, your application can be installed to internal or external storage, including SD cards.
      diff --git a/docs/html/guide/components/fundamentals.jd b/docs/html/guide/components/fundamentals.jd index 1717782129b4..2c33a26d195d 100644 --- a/docs/html/guide/components/fundamentals.jd +++ b/docs/html/guide/components/fundamentals.jd @@ -463,7 +463,7 @@ applications are available on each device. As such, your application should be a devices that meet all your application requirements.

      For more information about how Google Play filters applications based on these (and other) -requirements, see the Filters on Google Play +requirements, see the Filters on Google Play document.

      diff --git a/docs/html/guide/practices/compatibility.jd b/docs/html/guide/practices/compatibility.jd index a2284bd03133..bc584035f624 100644 --- a/docs/html/guide/practices/compatibility.jd +++ b/docs/html/guide/practices/compatibility.jd @@ -7,7 +7,7 @@ page.title=Android Compatibility

      See also

      1. Filtering on Google Play
      2. +href="{@docRoot}google/play/filters.html">Filtering on Google Play
      3. Providing Alternative Resources
      4. For information about other filters that you can use to control the availability of your apps, see the -Filters on Google Play +Filters on Google Play document.

        diff --git a/docs/html/guide/practices/screens-distribution.jd b/docs/html/guide/practices/screens-distribution.jd index 90ac752f7008..29d2a8c8e7dd 100644 --- a/docs/html/guide/practices/screens-distribution.jd +++ b/docs/html/guide/practices/screens-distribution.jd @@ -213,4 +213,4 @@ sizes, especially, is within reason using a single APK, as long as you follow th Supporting Multiple Screens.

        If you need more information about how to publish multiple APKs on Google Play, read Multiple APK Support.

        +href="{@docRoot}google/play/publishing/multiple-apks.html">Multiple APK Support.

        diff --git a/docs/html/guide/topics/data/install-location.jd b/docs/html/guide/topics/data/install-location.jd index 5abdced5519f..061a2c0f241e 100644 --- a/docs/html/guide/topics/data/install-location.jd +++ b/docs/html/guide/topics/data/install-location.jd @@ -167,7 +167,7 @@ external storage, it can never receive this broadcast.
        Copy Protection
        Your application cannot be installed to a device's SD card if it uses Google Play's Copy Protection feature. However, if you use Google Play's - Application Licensing instead, your + Application Licensing instead, your application can be installed to internal or external storage, including SD cards.
        diff --git a/docs/html/guide/topics/manifest/compatible-screens-element.jd b/docs/html/guide/topics/manifest/compatible-screens-element.jd index bb004fbef46c..9ef44fe66e45 100644 --- a/docs/html/guide/topics/manifest/compatible-screens-element.jd +++ b/docs/html/guide/topics/manifest/compatible-screens-element.jd @@ -54,7 +54,7 @@ href="{@docRoot}guide/topics/manifest/supports-screens-element.html">{@code <supports-screens>} element to declare whether the system should resize your application for different screen sizes.

        -

        Also see the Filters on Google Play +

        Also see the Filters on Google Play document for more information about how Google Play filters applications using this and other manifest elements.

        @@ -138,5 +138,5 @@ entry looks like if your application is compatible with only small and normal sc
        see also:
        Supporting Multiple Screens
        -
        Filters on Google Play
        +
        Filters on Google Play
        diff --git a/docs/html/guide/topics/manifest/manifest-element.jd b/docs/html/guide/topics/manifest/manifest-element.jd index 4807a5e8ddf7..fd9f2034ebd8 100644 --- a/docs/html/guide/topics/manifest/manifest-element.jd +++ b/docs/html/guide/topics/manifest/manifest-element.jd @@ -152,7 +152,7 @@ either internal or external storage through the system settings.

        Caution: If your application uses Google Play's Copy Protection feature, it cannot be installed to a device's SD card. However, if you use Google - Play's Application Licensing instead, + Play's Application Licensing instead, your application can be installed to internal or external storage, including SD cards.

        Note: By default, your application will be installed on the diff --git a/docs/html/guide/topics/manifest/supports-gl-texture-element.jd b/docs/html/guide/topics/manifest/supports-gl-texture-element.jd index 6dfc59e0b800..65d3d4042db0 100644 --- a/docs/html/guide/topics/manifest/supports-gl-texture-element.jd +++ b/docs/html/guide/topics/manifest/supports-gl-texture-element.jd @@ -3,38 +3,36 @@ parent.title=The AndroidManifest.xml File parent.link=manifest-intro.html @jd:body +

        +
        syntax:
        -<supports-gl-texture android:name="string" />
        +<supports-gl-texture
        +  android:name="string" />
         
        contained in:
        <manifest>
        - -
        description:
        Declares a single GL texture compression format that is supported by the application. @@ -141,7 +139,7 @@ and others.
        see also:
        diff --git a/docs/html/guide/topics/manifest/uses-configuration-element.jd b/docs/html/guide/topics/manifest/uses-configuration-element.jd index 20ec85f51af5..810975e1e0df 100755 --- a/docs/html/guide/topics/manifest/uses-configuration-element.jd +++ b/docs/html/guide/topics/manifest/uses-configuration-element.jd @@ -16,14 +16,12 @@ easier to update the doc when the change is made. -->
        syntax:
        -
        <uses-configuration android:reqFiveWayNav=["true" | "false"] 
        -                    android:reqHardKeyboard=["true" | "false"]
        -                    android:reqKeyboardType=["undefined" | "nokeys" | "qwerty" |  
        -                                             "twelvekey"]
        -                    android:reqNavigation=["undefined" | "nonav" | "dpad" | 
        -                                           "trackball" | "wheel"]
        -                    android:reqTouchScreen=["undefined" | "notouch" | "stylus" | 
        -                                            "finger"] />
        +
        <uses-configuration
        +  android:reqFiveWayNav=["true" | "false"] 
        +  android:reqHardKeyboard=["true" | "false"]
        +  android:reqKeyboardType=["undefined" | "nokeys" | "qwerty" | "twelvekey"]
        +  android:reqNavigation=["undefined" | "nonav" | "dpad" | "trackball" | "wheel"]
        +  android:reqTouchScreen=["undefined" | "notouch" | "stylus" | "finger"] />
        contained in:
        <manifest>
        diff --git a/docs/html/guide/topics/manifest/uses-feature-element.jd b/docs/html/guide/topics/manifest/uses-feature-element.jd index 10b5a330b384..c25dff8fc30a 100644 --- a/docs/html/guide/topics/manifest/uses-feature-element.jd +++ b/docs/html/guide/topics/manifest/uses-feature-element.jd @@ -28,47 +28,40 @@ parent.link=manifest-intro.html - -
        - -
        syntax:
        -
        -
        <uses-feature android:name="string"
        -              android:required=["true" | "false"]
        -              android:glEsVersion="integer" />
        -
        - -
        contained in:
        -
        <manifest>
        -
      5. devices, naturally you want your application look its best on each individual device, regardless of the fact they don’t all support the same set of GL textures. It may seem at the outset as though multiple APK support is the best solution, but this often isn’t the case. The Using Single APK +href="{@docRoot}google/play/publishing/multiple-apks.html#ApiLevelOptions">Using Single APK Instead section of the multiple APK developer guide includes some useful information on how to accomplish this with a single APK, including how to detect supported texture +href="{@docRoot}google/play/publishing/multiple-apks.html#TextureOptions">detect supported texture formats at runtime. Depending on your situation, it might be easier to bundle all formats with your application, and simply pick which one to use at runtime.

        -- cgit v1.2.3-59-g8ed1b