Библиотека проверки лицензии в обоях - PullRequest
1 голос
/ 06 июня 2011

В настоящее время я пытаюсь внедрить LVL Google в свои обои, но, похоже, столкнулся с проблемой, за исключением того, что я не знаком с ним.Я нашел этот Вопрос, который мне очень помог, Лицензирование LVL в Живых Обоях? .Одним из предложений является размещение кода в Engine, и я решил поместить его в класс выше.Кажется, что код компилируется нормально, но во время выполнения я получаю исключение, очевидно, для моего открытого ключа.

FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to create service <my package>.MyWallpaper: java.lang.IllegalArgumentException: java.security.spec.InvalidKeySpecException: java.io.IOException: corrupted stream - out of bounds length found
at android.app.ActivityThread.handleCreateService(ActivityThread.java:2076)
at android.app.ActivityThread.access$2500(ActivityThread.java:123)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:993)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3835)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.IllegalArgumentException: java.security.spec.InvalidKeySpecException: java.io.IOException: corrupted stream - out of bounds length found
at com.android.vending.licensing.LicenseChecker.generatePublicKey(LicenseChecker.java:121)
at com.android.vending.licensing.LicenseChecker.<init>(LicenseChecker.java:92)
at com.metastable.epicvis.vis1.ScopeVisualizer.onCreate(ScopeVisualizer.java:41)
at android.app.ActivityThread.handleCreateService(ActivityThread.java:2066)
... 10 more
Caused by: java.security.spec.InvalidKeySpecException: java.io.IOException: corrupted stream - out of bounds length found
at org.bouncycastle.jce.provider.JDKKeyFactory.engineGeneratePublic(JDKKeyFactory.java:92)
at org.bouncycastle.jce.provider.JDKKeyFactory$RSA.engineGeneratePublic(JDKKeyFactory.java:396)
at java.security.KeyFactory.generatePublic(KeyFactory.java:177)
at com.android.vending.licensing.LicenseChecker.generatePublicKey(LicenseChecker.java:112)
... 13 more

Вот код, который я использую:

public class MyWallpaper extends WallpaperService implements LicenseCheckerCallback {

private LicenseChecker mChecker;
private static final String BASE64_PUBLIC_KEY = "My public key from google"; 
private byte[] salt = new byte[] {<20 random int>};
private String deviceId;
private AESObfuscator aes;


@Override
public void onCreate() {
    super.onCreate();
    deviceId = Secure.getString(getContentResolver(), Secure.ANDROID_ID);
    aes = new AESObfuscator(salt, getPackageName(), deviceId);
    mChecker = new LicenseChecker(this, new ServerManagedPolicy(this, aes), BASE64_PUBLIC_KEY);
    mChecker.checkAccess(this);
}

@Override
public void onDestroy() {
    super.onDestroy();
    mChecker.onDestroy();
}

@Override
public Engine onCreateEngine() {
    return new VisualizerEngine();
}

class MyEngine extends Engine implements SharedPreferences.OnSharedPreferenceChangeListener {
         <Unrelevant code removed>
}

@Override
public void allow() {
    Toast.makeText(this, "Allowed", Toast.LENGTH_SHORT);

}

@Override
public void dontAllow() {
    Toast.makeText(this, "Not Allowed", Toast.LENGTH_SHORT);

}

@Override
public void applicationError(ApplicationErrorCode errorCode) {
    // TODO Auto-generated method stub

}

}

Есть лиопределенным образом я должен отформатировать свой открытый ключ или это что-то совершенно другое?

Исключение составляют: mChecker = new LicenseChecker (this, new ServerManagedPolicy (this, aes), BASE64_PUBLIC_KEY);

Любой совет будет принята с благодарностью.

1 Ответ

1 голос
/ 01 июля 2011

С тех пор я выяснил проблему, по-видимому, я ужасен и копирую и вставляю. Вместо перетаскивания клика и выбора ключа, который я делал много раз и продолжал терпеть неудачу, я просто трижды щелкнул, и он правильно скопировал. Хех.

...