Форум программистов, компьютерный форум CyberForum.ru

Проверка лицензии - Android

Восстановить пароль Регистрация
 
ASDFD12
31 / 31 / 5
Регистрация: 15.09.2012
Сообщений: 408
01.01.2014, 15:51     Проверка лицензии #1
Есть проверка лицензии приложения, которая запускается так:
Java
1
mChecker.checkAccess(mLicenseCheckerCallback);
Обьект mLicenseCheckerCallback служит для возвращение результата проверки лицензии. Вот его класс.
В случае удачной проверки лицензии запускаеться метод allow(). Я хочу чтобы этот метод поменял значение TextView. Проверка лицензии, я так понимаю происходит в свое потоке (я ее не писал), таким образом я в методе OnCreate () определил обработчик Handler (код ниже). А в методе allow() создаю пустое сообщение, в переменную what записываю 10 (просто так). Когда это сообщение прийдет, обработчик должен поменять значение текста в TextView. Но приложение зависает в обработчике Handler на строке, где меняеться текст.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
class MyLicenseCheckerCallback implements IAndroidPitLicenseCheckerCallback
        {
 
            @Override
            public void allow()
            {
                Log.d(LoqTag, "allow");
                // TODO: Handle positive response
            mHandler.sendEmptyMessage(10); // вот отправил пустое сообщение
                
            }
 
            @Override
            public void dontAllow()
            {
                Log.d(LoqTag, "dontAllow");
                
                // TODO: Handle negative response
                   
 
            }
 
           
           
 
            @Override
            public void applicationError(AndroidPitLicenseCheckCode errorCode) {
                Log.d(LoqTag, "msgError");
                
                // TODO Auto-generated method stub
                
            }
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public class MainActivity extends Activity {
....
...
Handler mHandler;
.....
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        txt1= (TextView)findViewById(R.id.textView1);
        Log.d(LoqTag, "ссылка на textView");
        
         mHandler = new Handler() {
                
            
                
                public void handleMessage(android.os.Message msg) 
                {
                
                    Log.d(LoqTag,"handleMessage");
                    // обновляем TextView
                    txt1.setText("HELLO");
                                  
                }
                                              };     
 
...
}
Вот последние логи
Java
1
2
3
4
5
6
7
8
9
10
11
12
01-01 13:49:14.794: D/jdwp(16603): processIncoming
01-01 13:49:14.794: D/jdwp(16603): handlePacket : cmd=0x1, cmdSet=0x6, len=0x17, id=0x1129, flags=0x0, dataLen=0xC
01-01 13:49:14.797: D/jdwp(16603): processIncoming
01-01 13:49:14.797: D/jdwp(16603): handlePacket : cmd=0x1, cmdSet=0x2, len=0x13, id=0x112A, flags=0x0, dataLen=0x8
01-01 13:49:14.799: D/jdwp(16603): processIncoming
01-01 13:49:14.799: D/jdwp(16603): handlePacket : cmd=0xD, cmdSet=0x2, len=0x13, id=0x112B, flags=0x0, dataLen=0x8
01-01 13:49:14.802: D/jdwp(16603): processIncoming
01-01 13:49:14.802: D/jdwp(16603): handlePacket : cmd=0x1, cmdSet=0x6, len=0x17, id=0x112C, flags=0x0, dataLen=0xC
01-01 13:49:14.805: D/jdwp(16603): processIncoming
01-01 13:49:14.805: D/jdwp(16603): handlePacket : cmd=0x1, cmdSet=0x2, len=0x13, id=0x112D, flags=0x0, dataLen=0x8
01-01 13:49:14.808: D/jdwp(16603): processIncoming
01-01 13:49:14.808: D/jdwp(16603): handlePacket : cmd=0xD, cmdSet=0x2, len=0x13, id=0x112E, flags=0x0, dataLen=0x8
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YuraAAA
 Аватар для YuraAAA
1563 / 1305 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
01.01.2014, 17:34     Проверка лицензии #2
ASDFD12, попробуйте передать в Ваш класс экземпляр TextView и вызвать метод post.

ex:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
class MyLicenseCheckerCallback implements IAndroidPitLicenseCheckerCallback{
    
    private TextView textView;
 
    MyLicenseCheckerCallback(TextView textView) {
        this.textView = textView;
    }
 
    @Override
    public void allow()
    {
        Log.d(LoqTag, "allow");
        // TODO: Handle positive response
        if (textView != null) {
            textView.post(new Runnable() {
                @Override
                public void run() {
                    textView.setText("");     
                }
            });
        }
 
    }
 
    @Override
    public void dontAllow()
    {
        Log.d(LoqTag, "dontAllow");
 
        // TODO: Handle negative response
 
 
    }
 
 
 
 
    @Override
    public void applicationError(AndroidPitLicenseCheckCode errorCode) {
        Log.d(LoqTag, "msgError");
 
        // TODO Auto-generated method stub
 
    }
}
ASDFD12
31 / 31 / 5
Регистрация: 15.09.2012
Сообщений: 408
01.01.2014, 21:19  [ТС]     Проверка лицензии #3
Цитата Сообщение от YuraAAA Посмотреть сообщение
попробуйте передать в Ваш класс экземпляр TextView и вызвать метод post.
Не работает. Сделал все как казали, не проходит проверку
Java
1
 if (textView != null)
YuraAAA
 Аватар для YuraAAA
1563 / 1305 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
01.01.2014, 21:20     Проверка лицензии #4
ASDFD12, ага, а Вы вызов когда делаете? Надо делать после setContentView и после findViewById
ASDFD12
31 / 31 / 5
Регистрация: 15.09.2012
Сообщений: 408
01.01.2014, 21:32  [ТС]     Проверка лицензии #5
Цитата Сообщение от YuraAAA Посмотреть сообщение
Вы вызов когда делаете?
Так и делаю
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        txt1= (TextView)findViewById(R.id.textView1); 
        Log.d(LoqTag, "ссылка на textView");
                
        mLicenseCheckerCallback = new MyLicenseCheckerCallback(txt1);
        
        TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
                device_id=tm.getDeviceId();
        
        
        Log.d(LoqTag, "создаем mChecker");
        mChecker = new AndroidPitLicenseChecker(
                this,
                getPackageName(),
                ANDROIDPIT_PUBLIC_KEY);
        
        Log.d(LoqTag, "выводым контент");
        setContentView(R.layout.activity_main);
        Log.d(LoqTag, "вкл Debag");
        mChecker.setDebug(true);
        Log.d(LoqTag, "run license");
        mChecker.checkAccess(mLicenseCheckerCallback); // вот вызов
        Log.d(LoqTag, "change text");
        
    }
YuraAAA
 Аватар для YuraAAA
1563 / 1305 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
02.01.2014, 12:16     Проверка лицензии #6
ASDFD12, setContentView(R.layout.activity_main); перенесите на верх, чтобы бы было так:

Java
1
2
3
4
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //....
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.01.2014, 14:48     Проверка лицензии
Еще ссылки по теме:

Проверка интернет соединения Android
Android Проверка вводимых данных
проверка apk Android
Android Проверка логина
Android проверка антивируса

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
ASDFD12
31 / 31 / 5
Регистрация: 15.09.2012
Сообщений: 408
02.01.2014, 14:48  [ТС]     Проверка лицензии #7
Помогло.
Yandex
Объявления
02.01.2014, 14:48     Проверка лицензии
Ответ Создать тему
Опции темы

Текущее время: 12:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru