¿Cómo puedo licenciar mi aplicación de Android?

Estoy a punto de completar mi aplicación de Android. Ahora quiero subir mi aplicación al mercado de Android para la aplicación de pago. Por eso he leído el documento del sitio de Android:

Licencias para Android

Pero quiero ver cualquier demostración o proyecto que haya hecho tal licencia. He visto la demostración en el sitio de desarrollo de android de mainactivity. Pero allí se da el controlador y quiero implementar ese código en mymainactivity del proyecto. En mymainactivity hay una pantalla de bienvenida en el inicio de la aplicación, y he establecido un controlador para ello. Es por eso que necesito un ejemplo, para ver cómo implementar la licencia en nuestra propia aplicación.

Otra cosa que quiero saber es, ¿es obligatorio implementar la licencia de Android para cargar una aplicación de pago en el mercado de Android?

¿Es posible configurar la aplicación como pagada sin implementar la licencia de la aplicación de Android?
Si es así y hay demos disponibles, por favor, dame un enlace a eso.

Antes de empezar, haga que haya incluido la biblioteca de licencias en su proyecto, tal como se explica aquí: Licencias de Aplicaciones | Desarrolladores de Android

  1. Haga una nueva actividad en su proyecto llamado LicenseCheck.java

  2. Pegue lo siguiente en esa actividad:

    import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.content.DialogInterface; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.provider.Settings.Secure; import android.widget.Toast; import com.android.vending.licensing.AESObfuscator; import com.android.vending.licensing.LicenseChecker; import com.android.vending.licensing.LicenseCheckerCallback; import com.android.vending.licensing.ServerManagedPolicy; /** * NOTES ON USING THIS LICENSE FILE IN YOUR APPLICATION: * 1. Define the package * of you application above * 2. Be sure your public key is set properly @BASE64_PUBLIC_KEY * 3. Change your SALT using random digits * 4. Under AllowAccess, Add your previously used MainActivity * 5. Add this activity to * your manifest and set intent filters to MAIN and LAUNCHER * 6. Remove Intent Filters from previous main activity */ public class LicenseCheck extends Activity { private class MyLicenseCheckerCallback implements LicenseCheckerCallback { @Override public void allow() { if (isFinishing()) { // Don't update UI if Activity is finishing. return; } // Should allow user access. startMainActivity(); } @Override public void applicationError(ApplicationErrorCode errorCode) { if (isFinishing()) { // Don't update UI if Activity is finishing. return; } // This is a polite way of saying the developer made a mistake // while setting up or calling the license checker library. // Please examine the error code and fix the error. toast("Error: " + errorCode.name()); startMainActivity(); } @Override public void dontAllow() { if (isFinishing()) { // Don't update UI if Activity is finishing. return; } // Should not allow access. In most cases, the app should assume // the user has access unless it encounters this. If it does, // the app should inform the user of their unlicensed ways // and then either shut down the app or limit the user to a // restricted set of features. // In this example, we show a dialog that takes the user to Market. showDialog(0); } } private static final String BASE64_PUBLIC_KEY = "PLACE YOUR BASE KEY FROM GOOGLE HERE"; private static final byte[] SALT = new byte[] { INPUT 20 RANDOM INTEGERS HERE }; private LicenseChecker mChecker; // A handler on the UI thread. private LicenseCheckerCallback mLicenseCheckerCallback; private void doCheck() { mChecker.checkAccess(mLicenseCheckerCallback); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Try to use more data here. ANDROID_ID is a single point of attack. String deviceId = Secure.getString(getContentResolver(), Secure.ANDROID_ID); // Library calls this when it's done. mLicenseCheckerCallback = new MyLicenseCheckerCallback(); // Construct the LicenseChecker with a policy. mChecker = new LicenseChecker(this, new ServerManagedPolicy(this, new AESObfuscator(SALT, getPackageName(), deviceId)), BASE64_PUBLIC_KEY); doCheck(); } @Override protected Dialog onCreateDialog(int id) { // We have only one dialog. return new AlertDialog.Builder(this) .setTitle("Application Not Licensed") .setCancelable(false) .setMessage( "This application is not licensed. Please purchase it from Android Market") .setPositiveButton("Buy App", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Intent marketIntent = new Intent( Intent.ACTION_VIEW, Uri.parse("http://market.android.com/details?id=" + getPackageName())); startActivity(marketIntent); finish(); } }) .setNegativeButton("Exit", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { finish(); } }).create(); } @Override protected void onDestroy() { super.onDestroy(); mChecker.onDestroy(); } private void startMainActivity() { startActivity(new Intent(this, MainActivity.class)); //REPLACE MainActivity.class WITH YOUR APPS ORIGINAL LAUNCH ACTIVITY finish(); } public void toast(String string) { Toast.makeText(this, string, Toast.LENGTH_SHORT).show(); } } 
  3. Cambie la clave de base al google siempre, coloque 20 números enteros aleatorios en SALT, cambie MainActivity.class a la actividad principal de su aplicación.

  4. Actualice su archivo de manifiesto con la nueva actividad

     <!-- Old Launch Activity Here --> <activity android:label="@string/app_name" android:name=".MainActivity" /> <!-- New License Launch Activity with all intent filters from your previous main activity --> <!-- Translucent.NoTitleBar is so that this activity is never shown to the user --> <activity android:label="@string/app_name" android:name=".LicenseCheck" android:theme="@android:style/Theme.Translucent.NoTitleBar"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> 
  5. Agregar permiso en la etiqueta de manifiesto pero no en la etiqueta de aplicación

     <uses-permission android:name="com.android.vending.CHECK_LICENSE" /> 

¡Ya terminaste! Asegúrese de probarlo antes de publicar. Unesdoc.une

  • Más permisos en apk cargado que en archivo de manifiesto
  • <Compatible-pantallas> en Android
  • Crear grupo para probadores Alpha de Google Play
  • Estadísticas para visitar mi aplicación en Google Play Store
  • ¿Es posible distinguir (en el código) si el apk se instaló vía play o manualmente?
  • En Google Play, ¿Cómo impide la publicación de una aplicación con un paquete en particular lo que pueden publicarse otros paquetes y por quién?
  • Cargar aplicación de Android con código de versión diferente, pero el mismo nombre de versión
  • Proteger contra revisiones falsas en Google Play
  • Muestra que "tu dispositivo no es compatible con esta versión" para mi aplicación de pago en Nexus 7
  • Cómo crear Android La vista de cuadrícula de Google Play como Widget con imágenes de diferentes tamaños cargadas dinámicamente
  • ¿Por qué Google reproduce ocultar android.permission.VIBRATE para algunas aplicaciones?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.