Anonymous
Получение SMS и автозаполнение входного текста HTML с помощью WebView
Сообщение
Anonymous » 01 апр 2024, 12:42
Я хочу получить смс-код активации и автозаполнение только кода (без текста) в указанном вводе после получения СМС, я получаю СМС, но остального не знаю.
Как мне это сделать?
html:
AndroidManifest.xml:
MainActivity.java:
Код: Выделить всё
package com.site.gilali;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.graphics.Bitmap;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import android.view.View;
import android.widget.ProgressBar;
public class MainActivity extends AppCompatActivity {
private WebView mWebView;
// ProgressBar progressBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mWebView = findViewById(R.id.web_view);
// progressBar = findViewById(R.id.progressBar);
String siteUrl = "https://gilali.com/";
mWebView.loadUrl(siteUrl);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.setWebViewClient(new mWebViewClient());
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && checkSelfPermission(Manifest.permission.RECEIVE_SMS)
!= PackageManager.PERMISSION_GRANTED){
requestPermissions(new String[]{Manifest.permission.RECEIVE_SMS}, 1000);
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if(requestCode == 1000){
if(grantResults[0] == PackageManager.PERMISSION_GRANTED){
Toast.makeText(this, "Permission granted", Toast.LENGTH_SHORT).show();
}else {
Toast.makeText(this, "Permission not granted", Toast.LENGTH_SHORT).show();
finish();
}
}
}
private class mWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
// progressBar.setVisibility(View.VISIBLE);
// Toast.makeText(MainActivity.this, "Loading page...", Toast.LENGTH_SHORT).show();
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
// progressBar.setVisibility(View.GONE);
// Toast.makeText(MainActivity.this, "Loading finished", Toast.LENGTH_SHORT).show();
}
}
public void onBackPressed(){
if(mWebView.canGoBack()){
mWebView.goBack();
}else{
super.onBackPressed();
}
}
}
ReceiveSms.java:
Код: Выделить всё
package com.site.gilali;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.widget.Toast;
public class ReceiveSms extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")){
Bundle bundle = intent.getExtras();
SmsMessage[] msgs;
String msg_from;
if(bundle != null){
try{
Object[] pdus = (Object[]) bundle.get("pdus");
msgs = new SmsMessage[pdus.length];
for (int i = 0; i < msgs.length; i++){
msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
msg_from = msgs[i].getOriginatingAddress();
String msgBody = msgs[i].getMessageBody();
Toast.makeText(context, "From: "+msg_from+", Body: "+msgBody, Toast.LENGTH_SHORT).show();
//msgBody -> active code:5241
}
} catch (Exception e){
e.printStackTrace();
}
}
}
}
}
Хочу просто отделить код от текста сообщения и поместить его в поле после получения смс?
Подробнее здесь:
https://stackoverflow.com/questions/782 ... by-webview
1711964522
Anonymous
Я хочу получить смс-код активации и автозаполнение только кода (без текста) в указанном вводе после получения СМС, я получаю СМС, но остального не знаю. Как мне это сделать? html: [code] [/code] AndroidManifest.xml: [code] [/code] MainActivity.java: [code]package com.site.gilali; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import android.Manifest; import android.content.pm.PackageManager; import android.os.Build; import android.os.Bundle; import android.webkit.WebView; import android.webkit.WebViewClient; import android.graphics.Bitmap; import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; import android.view.View; import android.widget.ProgressBar; public class MainActivity extends AppCompatActivity { private WebView mWebView; // ProgressBar progressBar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mWebView = findViewById(R.id.web_view); // progressBar = findViewById(R.id.progressBar); String siteUrl = "https://gilali.com/"; mWebView.loadUrl(siteUrl); mWebView.getSettings().setJavaScriptEnabled(true); mWebView.setWebViewClient(new mWebViewClient()); if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && checkSelfPermission(Manifest.permission.RECEIVE_SMS) != PackageManager.PERMISSION_GRANTED){ requestPermissions(new String[]{Manifest.permission.RECEIVE_SMS}, 1000); } } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { if(requestCode == 1000){ if(grantResults[0] == PackageManager.PERMISSION_GRANTED){ Toast.makeText(this, "Permission granted", Toast.LENGTH_SHORT).show(); }else { Toast.makeText(this, "Permission not granted", Toast.LENGTH_SHORT).show(); finish(); } } } private class mWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); // progressBar.setVisibility(View.VISIBLE); // Toast.makeText(MainActivity.this, "Loading page...", Toast.LENGTH_SHORT).show(); } @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); // progressBar.setVisibility(View.GONE); // Toast.makeText(MainActivity.this, "Loading finished", Toast.LENGTH_SHORT).show(); } } public void onBackPressed(){ if(mWebView.canGoBack()){ mWebView.goBack(); }else{ super.onBackPressed(); } } } [/code] ReceiveSms.java: [code]package com.site.gilali; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.telephony.SmsMessage; import android.widget.Toast; public class ReceiveSms extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")){ Bundle bundle = intent.getExtras(); SmsMessage[] msgs; String msg_from; if(bundle != null){ try{ Object[] pdus = (Object[]) bundle.get("pdus"); msgs = new SmsMessage[pdus.length]; for (int i = 0; i < msgs.length; i++){ msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]); msg_from = msgs[i].getOriginatingAddress(); String msgBody = msgs[i].getMessageBody(); Toast.makeText(context, "From: "+msg_from+", Body: "+msgBody, Toast.LENGTH_SHORT).show(); //msgBody -> active code:5241 } } catch (Exception e){ e.printStackTrace(); } } } } } [/code] Хочу просто отделить код от текста сообщения и поместить его в поле после получения смс? Подробнее здесь: [url]https://stackoverflow.com/questions/78253184/sms-receiving-and-autofill-in-html-input-text-by-webview[/url]