Kotlinを使ってアプリのログイン画面を作成しています。
今回はMVCモデルを採用しており、下記LoginActivity.kt→BudgetTrackerUserDao.ktの「logIn」関数を用いて ログインを行いたいのですが、
結果としては、TOASTメッセージで私が設定した「"Login failed!"」の文字が画面に表示され、
当方で確認できる限りでは、表示されたエラーは下記のみでした。
エラー文
device/generic/goldfish/audio/stream_out.cpp:updateSourceMetadata:378 failure: Result::NOT_SUPPORTED
当該エラー内容でググってみたのですが、検索結果数が少ないのと、該当する結果が得られなかったため、詰まっております。
LoginActivity.kt
1try { 2 budgetTrackerUserDao.logIn(budgetTrackerUserDto) { result -> 3 if (result == 1) { 4 Toast.makeText(this@LoginActivity, "Login successful!", Toast.LENGTH_SHORT).show() 5 val intent = Intent(this, MainActivity::class.java) 6 startActivity(intent) 7 } else { 8 Toast.makeText(this@LoginActivity, "Login failed!", Toast.LENGTH_SHORT).show() 9 } 10 } 11 } catch (e: IOException) { 12 Toast.makeText(this@LoginActivity, "Error in logging in!", Toast.LENGTH_SHORT).show() 13 e.printStackTrace() 14 15 }
BudgetTrackerUserDao.kt
1fun logIn(budgetTrackerUserDto: BudgetTrackerUserDto, callback: (result: Int) -> Unit) { 2 var result = 0 3 try { 4 val properties = Properties() 5 val inputStream = context.assets.open("server_config.properties") 6 properties.load(inputStream) 7 val serverUrl = properties.getProperty("server_url") 8 val phpLoginFile = properties.getProperty("login_php_file") 9 val loginUrl = "$serverUrl$phpLoginFile" 10 Log.d("login_url", loginUrl) 11 val stringRequest = object : StringRequest(Method.POST, loginUrl, 12 Response.Listener { response -> 13 if (!response.isEmpty()) { 14 try { 15 val jsonObject = JSONObject(response) 16 val success = jsonObject.getInt("success") 17 if (success == 1) { 18 result = 1 19 } 20 } catch (e: JSONException) { 21 Log.e("JSONException", e.toString()) 22 } 23 } 24 callback(result) 25 }, 26 Response.ErrorListener { error -> 27 if (context != null) { 28 Toast.makeText(context, "Unable to send data $error", Toast.LENGTH_SHORT).show() 29 } 30 Log.e("VolleyError", error.toString()) 31 callback(result) 32 }) { 33 @Throws(AuthFailureError::class) 34 override fun getParams(): Map<String, String> { 35 val params = HashMap<String, String>() 36 params["user_name"] = budgetTrackerUserDto.getId() 37 params["password"] = budgetTrackerUserDto.getPassword() 38 return params 39 } 40 } 41 val requestQueue = Volley.newRequestQueue(context) 42 requestQueue.add(stringRequest) 43 } catch (e: IOException) { 44 e.printStackTrace() 45 } 46 } 47
バックエンドサーバの開発環境は以下の通りです。
今回はLAMPを用いて言います。
OS: Ubuntu Server 20.04
Apache: Apache/2.4.41 (Ubuntu)
MySQL: 8.0.32-0ubuntu0.20.04.2 for Linux on x86_64
PHP: PHP 8.1.14 (cli)
流れとしては、/var/www/androidに下記userRegistrationInsert.phpを用意しており、
こちらがAndroid端末から新規ユーザ情報を受け取るAPIとして機能しています。
-rw-r--r-- 1 root root 890 Feb 4 11:07 loginToTheSystem.php
上記の通り、エラーメッセージがNOT_SUPPORTEDのみのため、
解決案をご提示いただける方がおられましたら、ご回答の程よろしくお願いいたします。
回答1件