Code:Sub Activity_KeyPress (KeyCode As Int) As Boolean If KeyCode = KeyCodes.KEYCODE_BACK Then If Msgbox2("Are you sure to exit?", "", "Yes", "", "No", Null) = DialogResponse.POSITIVE Then Return False ExitApplication '...or whatever other previous killing actions. Else Return True End If Else Return False ' Handle the other presses in the OS End If End Sub
суббота, 30 ноября 2019 г.
четверг, 21 ноября 2019 г.
UScommander
Давно планировал сделать управляющий софт для ультразвукового генератора. Была задумка по-быстрячку вернуться к забытому LabView. Но, к сожалению, NI давно перестал поддерживать ту старенькую версию, на которой я учился. А современные версии вьюхи во-первых весят непомерно много (гигабайты), и во-вторых поменяли идеологию работы по протоколу ModBus. Так что пришлось изобретать велосипед.
вторник, 12 ноября 2019 г.
пятница, 8 ноября 2019 г.
Запустить ютуб или страничку в стороннем браузере
Запустить в ютуб-апликухе
Dim Intent1 As Intent
Dim videoid As String
videoid = "klMN44nn44n"
Intent1.Initialize(Intent1.ACTION_VIEW, "vnd.youtube:"&videoid)
Intent1.PutExtra("VIDEO_ID",videoid)
StartActivity(Intent1)
Dim Intent1 As Intent
Dim videoid As String
videoid = "klMN44nn44n"
Intent1.Initialize(Intent1.ACTION_VIEW, "vnd.youtube:"&videoid)
Intent1.PutExtra("VIDEO_ID",videoid)
StartActivity(Intent1)
Обработка ошибки загрузки страницы
Code:
Sub Globals Private MainWebView As WebView Private WVE As WebViewExtras Private DWVC As DefaultWebViewClient End Sub Sub Activity_Create(FirstTime As Boolean) Activity.LoadLayout("layout") DWVC.Initialize("WebViewClient") WVE.Initialize(MainWebView) WVE.SetWebViewClient(DWVC) WVE.LoadUrl("<your link>")
End Sub
Sub WebViewClient_ReceivedError(ErrorCode As Int, Description As String, FailingUrl As String ) WVE.LoadHtml(CustomWebviewError.GetErrorPageHtml(Description))/span> End Sub
Key "Back" reaction
Вариант с подтверждающим месседжбоксом
Вариант с двойным нажатием в течении 3х секунд
Code:Sub Globals Dim closeCounter As Int ' For double click exit routineDim closeTimer As Long end sub Sub Activity_KeyPress (KeyCode As Int) As Boolean Select KeyCode Case KeyCodes.KEYCODE_BACK closeCounter = closeCounter + 1 ' Handle the user exit request ' First time so start the counter If closeCounter = 1 Then closeTimer = DateTime.Now ToastMessageShow("Press Back again to exit", False) End If ' Second time but not within 3 seconds, reset to "First time" If closeCounter = 2 AND DateTime.Now > closeTimer + 3000 Then closeCounter = 1 closeTimer = DateTime.Now ToastMessageShow("Press Back again to exit", False) End If ' Two tries within 3 seconds, we're done If closeCounter = 2 Then closeCounter = 0 Activity.Finish End If Return True Case Else Return False End Select End Sub
четверг, 7 ноября 2019 г.
понедельник, 4 ноября 2019 г.
Залогинивание вручную
Принимаем запрос по /login?u=username&p=password
Затем загружаем юзера по логину и сравниваем запрошенный и установленный пароли с помощью хешера. Если все совпало, то логиним юзера и возвращаем все его параметры.
public function login() {
$data = $this->request->query;
$this->loadModel('User');
$user = $this->User->find('first', array('conditions' => array('login' => $data['u'])));
$passwordHasher = new BlowfishPasswordHasher();
$confirm = $passwordHasher->check($data['p'], $user['User']['password']);
if ($confirm) { // пароль поравильный
$this->Auth->login($user['User']);
$data = $this->Session->read('Auth');
} else {
$data = array('Error' => 'Bad password');
}
$this->set(compact('data'));
}
Затем загружаем юзера по логину и сравниваем запрошенный и установленный пароли с помощью хешера. Если все совпало, то логиним юзера и возвращаем все его параметры.
public function login() {
$data = $this->request->query;
$this->loadModel('User');
$user = $this->User->find('first', array('conditions' => array('login' => $data['u'])));
$passwordHasher = new BlowfishPasswordHasher();
$confirm = $passwordHasher->check($data['p'], $user['User']['password']);
if ($confirm) { // пароль поравильный
$this->Auth->login($user['User']);
$data = $this->Session->read('Auth');
} else {
$data = array('Error' => 'Bad password');
}
$this->set(compact('data'));
}
Подписаться на:
Сообщения (Atom)