2013-04-23 29 views
6

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 .

Trả lời

1

Cuối cùng, tôi đã tìm được cách kiểm tra giấy phép kiểm tra google phù hợp.

Như tôi đã tải lên APK trong google play phát triển giao diện điều khiển như dự thảo và Nếu tôi cài đặt mà apk trong bất kỳ thiết bị hơn nó sẽ chạy với phản ứng PHÉP nếu trong thiết bị không có đăng nhập với tài khoản thử nghiệm.

Và cuối cùng tôi thử nghiệm cách này tôi đã thêm tài khoản thử nghiệm và tôi chọn Giấy phép Phản hồi kiểm tra trong phát triển giao diện điều khiển như PHÉP hơn ứng dụng sẽ chạy và sau khi tôi cũng thay đổi thiết lập trong phát triển giao diện điều khiển với NOT_LICENSED hơn nó cho thấy hộp thoại về vi phạm bản quyền trong thiết bị có tài khoản thử nghiệm là tài khoản chính.

QUAN TRỌNG LƯU Ý: Và khác hơn là các thiết bị kiểm tra tài khoản nó chạy với phản ứng PHÉP beacuse là Tôi đã tải lên APK như dự thảo trong vở kịch store.So cho việc cấp phép thử nghiệm google chúng ta phải phải xem xét chỉ tài khoản thử nghiệm bổ sung trong Google Play Developer Console

+0

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

+0

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

+0

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

0

LVL đang hoạt động trên tất cả các thiết bị có tài khoản Bạn đã thêm, không chỉ tài khoản chính. Nó không nên hoạt động trên điện thoại với một tài khoản Bạn không được thêm vào bảng điều khiển dành cho nhà phát triển. Thậm chí, LVL cố gắng xác minh ứng dụng của bạn với google LVL -Server, vì vậy Bạn cần kết nối internet, điều này là ok. Nếu bạn chỉ muốn kiểm tra giấy phép một lần, bạn phải lưu một số dữ liệu ví dụ trong các sở thích được chia sẻ, kiểm tra đã thực hiện. Vì vậy, lần sau khi ứng dụng bắt đầu, bạn có thể kiểm tra với các tùy chọn được chia sẻ đã lưu này, nếu ứng dụng vừa được xác minh. Nếu có, không kiểm tra lại, nếu không, hãy thử lại.

Bạn có thể thiết lập các hành vi kiểm tra giấy phép các nhà phát triển giao diện điều khiển, Bạn có thể mô phỏng một phản ứng bình thường, hoặc ví dụ như một "không xác minh" phản ứng và vân vân ....

+0

trong trường hợp của tôi nó cũng hoạt động trong thiết bị có tài khoản tôi chưa thêm trong bảng điều khiển dành cho nhà phát triển nghĩa là ứng dụng đang hoạt động trên tất cả các thiết bị – Khan

+0

Ok, hơn tôi hiểu sai. Bạn có thực sự, thực sự chắc chắn rằng ở thiết bị khác không có tài khoản thử nghiệm.Ý tôi là, có thể có nhiều hơn một tài khoản, có thể có các tài khoản thử nghiệm trên các thiết bị này? – Opiatefuchs

1

u đã thực hiện tất cả các bước nhưng hãy kiểm tra lại một lần nữa:

1.check once ur's public key compare with the draft store public key. 
2.Give own salt 20 numbers. 
3.Give properly test accounts in the google play and same account 
    use in the device also. 
4.In google play u have to put licensed mode for application draft. 
5.check after some time because it will take some time to give valid results. 
6.finally verify the alert dialog conditions in application. 
7.clear the google play cache in ur mobile may be it will store the results. 
Các vấn đề liên quan