Well I have made some progress here. I can get a pointer to a valid market
license instance.

Surprising I am enjoying this.

Now I need to implement the call back based on a Java interface:
"com/android/vending/licensing/LicenseCheckerCallback"

Below is my code example. Basically I am trying to create a C# wrapper
interface. To do this I am decorating this wrapper with an attribute. Then I
want to use a C# class that will implement this C# interface.

But am I on the right track here?

Even if you may not know the solution for this particular example but have
knowledge on creating a C# wrapper for a Java interface could be helpful.

I want to learn this as:
1. I prefer not to to learn Java. Although I find reading Java code quite
simple
2. There could be other Java libraries I might want to implement one day and
this will be a great start




using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
 
namespace MarketLicensing
{
    public class LicenseHelper
    {
        // Generate 20 random bytes, and put them here.
        private byte[] Salt = new byte[] { 46, 65, 30, 128, 103, 57, 74, 64,
51, 88, 95, 45, 77, 117, 36, 113, 11, 32, 64, 89 };
 
        private Java.Lang.String _base64PublicKey = new
Java.Lang.String("MyPublicKey");
        private IntPtr _licensingInstance;
        private LicenseCheckerCallback _licenseCheckerCallback;
 
        public LicenseHelper(moonbase3.MainActivity activity)
        {
            // Get Android Device Id
            var deviceId = new Java.Lang.String(
               
Android.Provider.Settings.Secure.GetString(activity.ContentResolver,
Android.Provider.Settings.Secure.AndroidId)).Handle;
 
 
            // Library calls this when it's done.
            _licenseCheckerCallback = new LicenseCheckerCallback();
 
            // Construct the LicenseChecker with a policy.
            var licensing =
JNIEnv.FindClass("com/android/vending/licensing/LicenseChecker");
            var serverPolicy =
JNIEnv.FindClass("com/android/vending/licensing/ServerManagedPolicy");
            var aesObfuscator =
JNIEnv.FindClass("com/android/vending/licensing/AESObfuscator");
            var saltPointer = JNIEnv.NewArray<byte>(Salt);
 
            var aesObfuscatorInstance = JNIEnv.CreateInstance(
                aesObfuscator,
                "([BLjava/lang/String;Ljava/lang/String;)V",
                new JValue[] { new JValue(saltPointer), new JValue(new
Java.Lang.String(activity.PackageName).Handle), new JValue(deviceId) });
 
            var serverPolicyInstance = JNIEnv.CreateInstance(
                serverPolicy,
               
"(Landroid/content/Context;Lcom/android/vending/licensing/Obfuscator;)V",
                new JValue[] { new JValue(activity.Handle), new
JValue(aesObfuscatorInstance) }
                );
 
            _licensingInstance = JNIEnv.CreateInstance(
                licensing,
               
"(Landroid/content/Context;Lcom/android/vending/licensing/Policy;Ljava/lang/String;)V",
                new JValue[] { new JValue(activity.Handle), new
JValue(serverPolicyInstance), new JValue(_base64PublicKey) }
                );
 
            //doCheck();
        }
 

// ABOVE CODE ALL WORKS PERFECTLY
// HOWEVER AM I IMPLEMENTING THE BELOW CODE CORRECTLY????
// OR AM I WAY OFF TRACK??


       
[Android.Runtime.Register("com/android/vending/licensing/LicenseCheckerCallback",
DoNotGenerateAcw = true)]
        public interface ILicenseCheckerCallback : IJavaObject
        {
            [Register("allow", Signature = "()V", DoNotGenerateAcw = true)]
            void Allow();
        }
 
        public class LicenseCheckerCallback : Java.Lang.Object,
ILicenseCheckerCallback
        {
            public void Allow()
            {
            }
        }
    }
}

--
View this message in context: 
http://mono-for-android.1047100.n5.nabble.com/Does-anyone-have-a-code-example-for-using-Google-Market-Licensing-with-MonoDroid-tp5144555p5159094.html
Sent from the Mono for Android mailing list archive at Nabble.com.
_______________________________________________
Monodroid mailing list
Monodroid@lists.ximian.com

UNSUBSCRIBE INFORMATION:
http://lists.ximian.com/mailman/listinfo/monodroid

Reply via email to