the official instructions을 읽음으로써 Google License cheker를 구현했습니다. 여기Android 라이선스 애플리케이션이 작동하지 않습니까?
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.IBinder;
import android.provider.Settings.Secure;
import android.widget.Toast;
import com.google.android.vending.licensing.AESObfuscator;
import com.google.android.vending.licensing.LicenseChecker;
import com.google.android.vending.licensing.LicenseCheckerCallback;
import com.google.android.vending.licensing.ServerManagedPolicy;
public class Splash extends Activity {
MyLicenseCheckerCallback mLicenseCheckerCallback;
LicenseChecker mChecker;
byte[] SALT = new byte[] { -73, 95, 70, -126, -103, -57, 14, -46, 51, 88, -5,
-60, 77, -88, -63, -13, -1, 82, -4, 9 };
//Handler mHandler;
String BASE64_PUBLIC_KEY="My base key";
Context mContext;
IBinder serviceBinder;
String deviceId;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
mLicenseCheckerCallback = new MyLicenseCheckerCallback();
deviceId = Secure.getString(getContentResolver(), Secure.ANDROID_ID);
// Construct the LicenseChecker with a policy.
mChecker = new LicenseChecker(this,
new ServerManagedPolicy(Splash.this, new AESObfuscator(SALT,
getPackageName(), deviceId)), BASE64_PUBLIC_KEY);
doCheck();
}
private class MyLicenseCheckerCallback implements LicenseCheckerCallback {
@Override
public void allow(int reason) {
// TODO Auto-generated method stub
if (isFinishing())
return; // Don't update UI if Activity is finishing.
// Toast.makeText(Splash.this, "Success", Toast.LENGTH_LONG).show();
Intent intent=new Intent(Splash.this,Main.class);
startActivity(intent);
finish();
// Should allow user access.
// so do nothing
}
@Override
public void dontAllow(int reason) {
// TODO Auto-generated method stub
if (isFinishing())
return; // Don't update UI if Activity is finishing.
// Toast.makeText(Splash.this, "Fail", Toast.LENGTH_LONG).show();
createDialog();
}
@Override
public void applicationError(int errorCode) {
// TODO Auto-generated method stub
}
}
@Override
protected void onDestroy() {
super.onDestroy();
mChecker.onDestroy();
}
private void doCheck() {
// mCheckLicenseButton.setEnabled(false);
setProgressBarIndeterminateVisibility(true);
/// mStatusText.setText(R.string.checking_license);
mChecker.checkAccess(mLicenseCheckerCallback);
}
public void createDialog(){
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("PIRACY WARNING");
builder.setMessage("A valid purchase for My App has not been detected. Your IP"
+ " has been logged and all offenders will be reported to the authorities."
+ " If you received this message in error, please contact Support.");
builder.setPositiveButton("Buy Now", new DialogInterface.OnClickListener() {
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);
}
});
builder.setNegativeButton("Quit", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
AlertDialog dialog = builder.create();
dialog.show();
}
}
와 내가에서 응용 프로그램을 실행하고 릴리스 키와 서명 및 구글 플레이 개발자 콘솔에서 초안으로 APK를 업로드하고이를 구현 한 후
<supports-screens android:normalScreens="true" android:largeScreens="true" android:smallScreens="true" android:anyDensity="true" android:xlargeScreens="true" android:resizeable="true"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="com.android.vending.CHECK_LICENSE" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
주어진 menifest 권한입니다 또한 개발자 콘솔 설정에 3 가지 테스트 계정을 추가했습니다.
필자는 테스트 계정을 장치의 메인 계정으로 사용하고 장치의 나머지 부분이 대화 상자를 표시해야하는 장치에서 실행되어야 함을 알고 있습니다.
내 경우에는 잘 작동하지만 인터넷 연결이 끊어지면이 이상한 상황이 발생하여 불법 복제에 관한 대화 상자가 표시되고 모든 장치에 문제가있는 것보다 연결되어있는 경우 테스트 계정 devies .
그게 나를 위해 일하지 않는다 .... 나를 도와주세요. 내가 언급했듯이 해적판 다이얼로그가 팝업 될 때마다 – user2592807
Google Play 개발자 콘솔에 테스트 Gmail 계정을 추가해야하며 기기에서 Play 계정에서 앱을 다운로드하는 데 사용되는 메인 Gmail 계정으로 계정을 보유해야합니다. 물론 라이센스 테스트 응답에서 언급 한 바와 같이 라이센스가 부여되지 않았거나 다른 옵션 대신 라이센스를 선택해야합니다. – Khan
계속해서 오류가 발생합니다 : "오류 : (48, 0) 설명 com.android.vending.CHECK_LICENSE가 유효하지 않습니다." 어떤 사람이 이유를 아는가? 많은 감사합니다. – cjayem13