Tôi đã triển khai Google License cheker bằng cách đọc the official instructions.Ứng dụng cấp phép Android không hoạt động?
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();
}
}
và đây là sự cho phép menifest mà tôi đưa
<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"/>
sau khi thực hiện điều này tôi chạy ứng dụng và đăng ký nó với với chính phát hành và tải apk như dự thảo trong google nhà phát triển trò chơi giao diện điều khiển và Tôi cũng đã thêm 3 tài khoản thử nghiệm trong cài đặt bảng điều khiển dành cho nhà phát triển.
Theo tôi đọc và hiểu phải được chạy trong thiết bị có tài khoản thử nghiệm là tài khoản chính trong thiết bị và phần còn lại của thiết bị, nó sẽ phải hiển thị hộp thoại. Nhưng trong trường hợp của tôi trong mọi thiết bị nó sẽ hoạt động tốt và điều này xảy ra một số tình huống lạ nếu internet bị ngắt kết nối hơn nó sẽ hiển thị hộp thoại về vi phạm bản quyền và nếu nó được kết nối hơn nó xấu đi trong tất cả các thiết bị inspite của tài khoản thử nghiệm devies .
nó không hoạt động cho tôi .... xin hãy giúp tôi. tôi đã làm như bạn đã đề cập, nhưng mỗi lần đối thoại vi phạm bản quyền bật lên – user2592807
bạn phải thêm tài khoản gmail thử nghiệm trong bảng điều khiển dành cho nhà phát triển trên google play và trong thiết bị bạn phải có tài khoản đó làm tài khoản gmail chính được sử dụng để tải xuống ứng dụng từ cửa hàng play.As cũng như tôi đã đề cập đến cho Phản hồi Kiểm tra Giấy phép, bạn cần chọn LICENSED thay vì NOTLICENSED hoặc bất kỳ tùy chọn nào khác. – Khan
Tôi tiếp tục gặp lỗi, "Lỗi: (48, 0) Mô tả com.android.vending.CHECK_LICENSE không hợp lệ". Bất kỳ cơ hội ai đó biết lý do tại sao? Cảm ơn nhiều. – cjayem13