2011년 3월 17일 목요일

Android : 안드로이드 마켓 License Validation Library 사용하기

[권한]
<uses-permission android:name="com.android.vending.CHECK_LICENSE />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />


[import]
import android.telephony.TelephonyManager;
import com.android.vending.licensing.AESObfuscator;
import com.android.vending.licensing.LicenseChecker;
import com.android.vending.licensing.LicenseCheckerCallback;
import com.android.vending.licensing.ServerManagedPolicy;


[class]
 private class MyLicenseCheckerCallback implements LicenseCheckerCallback { 
    @Override
    public void allow() { 
        if (isFinishing()) { 
            return; 
        } 
        // 라이선스 인증에 성공했을때 수행할 일을 여기에 추가 
    } 
    @Override
    public void applicationError(ApplicationErrorCode errorCode) { 
        // 에러 메시지 출력 등의 루틴 추가 
    } 
    @Override
    public void dontAllow() { 
        if (isFinishing()) { 
            return; 
        } 
        // 라이선스 인증에 실패했을 때 수행할 일을 여기에 추가 
    } 
}

[onCreate]
 public class MainActivity extends Activity { 
     // 2에서 확인한 public key 
     private static final String BASE64_PUBLIC_KEY = "MIIBIjANBgkqhkiG ... ";  
     // 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; 
     @Override
     public void onCreate(Bundle savedInstanceState) { 
         super.onCreate(savedInstanceState); 
   
         // LicenseCheckerCallback 초기화 
         mLicenseCheckerCallback = new MyLicenseCheckerCallback(); 
   
         // 디바이스 아이디를 얻기 위한 루틴 
         TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); 
         String deviceId = tm.getDeviceId(); 
   
         // LicenseChecker 초기화 
         mChecker = new LicenseChecker(  
                 this,  
                 new ServerManagedPolicy(this, new AESObfuscator(SALT, getPackageName(), deviceId)), 
                 BASE64_PUBLIC_KEY); 
   
         // License Validation 실행 
         mChecker.checkAccess(mLicenseCheckerCallback); 
     } 
   
     @Override
     protected void onDestroy() { 
         super.onDestroy(); 
         mChecker.onDestroy(); // 어플리케이션 종료시 메모리 반환 
     } 
}

출처 :  http://techdic.tistory.com/48

댓글 없음:

댓글 쓰기