패키지를 설치하고 나면 Android SDK를 설치한 곳에 market_licensing 폴더가 생성되고, 그 안에 library 폴더를 이용해 LVL를 사용한다.
http://market.android.com/publish/Home 접속 -> 마켓로고 아래 Edit profile » 클릭
Public Key를 사용해서 LVL을 적용 할 것이다.
workspace에 library를 프로젝트로 추가시켜 놓자.
Contents 를 Create project from existing source로 바꾸고 library폴더를 지정하면 자동으로 입력이 된다.
이제 LVL을 적용할 프로젝트를 우클릭 -> properties
Android 탭 -> Library Add -> Library 선택 -> 적용 후 확인
프로젝트에 라이브러리를 추가하는 것 까지는 완료되었다. 이제부터는 LVL을 적용시켜보자.
먼저, 매니페스트에 퍼미션을 추가시킨다.
<USES-PERMISSION android:name="com.android.vending.CHECK_LICENSE" />
<USES-PERMISSION android:name="android.permission.READ_PHONE_STATE" />
프로젝트에 라이브러리를 추가하는 것 까지는 완료되었다. 이제부터는 LVL을 적용시켜보자.
먼저, 매니페스트에 퍼미션을 추가시킨다.
<USES-PERMISSION android:name="com.android.vending.CHECK_LICENSE" />
<USES-PERMISSION android:name="android.permission.READ_PHONE_STATE" />
메인 액티비티에 소스를 추가하고 Ctrl + Shift + O 를 사용해 import 시키자.
// public key
private static final String BASE64_PUBLIC_KEY = "자신의 public key";
// 20개의 랜덤한 byte
private static final byte[] SALT = {-46, 65, 30, -128, -103, -57, 74, -64, 51, 88, -95, -45, 77, -117, -36, -113, -11, 32, -64, 89};
private static final String BASE64_PUBLIC_KEY = "자신의 public key";
// 20개의 랜덤한 byte
private static final byte[] SALT = {-46, 65, 30, -128, -103, -57, 74, -64, 51, 88, -95, -45, 77, -117, -36, -113, -11, 32, -64, 89};
private LicenseCheckerCallback mLicenseCheckerCallback;
private LicenseChecker mChecker;
private LicenseChecker mChecker;
@Override
protected void onDestroy() {
super.onDestroy();
mChecker.onDestroy(); // 어플리케이션 종료시 메모리 반환
}
protected void onDestroy() {
super.onDestroy();
mChecker.onDestroy(); // 어플리케이션 종료시 메모리 반환
}
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mLicenseCheckerCallback = new MyLicenseCheckerCallback();
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String deviceId = tm.getDeviceId();
// 초기화
mChecker = new LicenseChecker( this
, new ServerManagedPolicy(this, new AESObfuscator(SALT, getPackageName(), deviceId))
, BASE64_PUBLIC_KEY);
super.onCreate(savedInstanceState);
mLicenseCheckerCallback = new MyLicenseCheckerCallback();
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String deviceId = tm.getDeviceId();
// 초기화
mChecker = new LicenseChecker( this
, new ServerManagedPolicy(this, new AESObfuscator(SALT, getPackageName(), deviceId))
, BASE64_PUBLIC_KEY);
// 실행
mChecker.checkAccess(mLicenseCheckerCallback);
setContentView(R.layout.main);
}
mChecker.checkAccess(mLicenseCheckerCallback);
setContentView(R.layout.main);
}
private class MyLicenseCheckerCallback implements LicenseCheckerCallback {
@Override
public void allow() {
if (isFinishing()) {
return;
}
// 인증 성공
Log.v(null,"OK");
}
@Override
public void allow() {
if (isFinishing()) {
return;
}
// 인증 성공
Log.v(null,"OK");
}
@Override
public void applicationError(ApplicationErrorCode errorCode) {
// error
Log.v(null,"error");
}
public void applicationError(ApplicationErrorCode errorCode) {
// error
Log.v(null,"error");
}
@Override
public void dontAllow() {
if (isFinishing()) {
return;
}
// 인증 실패
Log.v(null,"fail");
}
}
public void dontAllow() {
if (isFinishing()) {
return;
}
// 인증 실패
Log.v(null,"fail");
}
}
댓글 없음:
댓글 쓰기