Как получить возвращаемое значение из JavaScript в webview андроида?

Таблица DynamoDB

Во-первых, вам нужно будет создать DynamoDB Table. Для этого вам понадобится минимально иметь таблицу Hash Key, которая действует как первичный ключ таблицы, вы также можете иметь необязательный Range Key, который действует как составной первичный ключ таблицы

. boxname, кажется, хорошо вписывается в таблицу Hash Key

Вы можете сразу же создать DynamoDB Table только с ключом хэширования, так как все остальные атрибуты не нужно указывать заранее, новые / дополнительные атрибуты могут быть добавлены на лету при создании новых записей

Создать запись

Вы можете использовать API PutItem Для создания записи в DynamoDB [1122 ]

https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html

Записи запросов

[1125 ] Вы можете использовать API Query для запроса записей по хеш-ключу таблицы, а также при желании также ключу диапазона

https://docs.aws.amazon.com/amazondynamodb/latest/APIReference /API_Query.html

Сканирование записей [112 7]

Используйте API Scan для сканирования записей по любым атрибутам Non Key, когда вы не можете извлечь записи на основе таблиц Hash Key и / или Range Key

. Обычно это не так. Рекомендуется создать структуру таблиц, в которой интенсивно используется API-интерфейс сканирования, поскольку он буквально выполняет операцию сканирования. Вместо этого рекомендуется структурировать таблицу, оптимизированную для операций с запросами

https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Scan.html

[ 1139] Получить запись

Вы можете использовать API GetItem для получения одной записи по хеш-ключу таблицы и, опционально, также по ключу диапазона

https: / /docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html

Надеюсь, что приведенная выше информация полезна для начала работы с DynamoDB

72
задан Rhyono 5 April 2012 в 05:03
поделиться

3 ответа

Можно сделать это как это:

[Activity(Label = "@string/app_name", Theme = "@style/AppTheme", MainLauncher = true)]
public class MainActivity : AppCompatActivity
{
    public WebView web_view;
    public static TextView textView;

    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        Xamarin.Essentials.Platform.Init(this, savedInstanceState);

        Window.AddFlags(WindowManagerFlags.Fullscreen);
        Window.ClearFlags(WindowManagerFlags.ForceNotFullscreen);

        // Set our view from the "main" layout resource
        SetContentView (Resource.Layout.main);

        web_view = FindViewById<WebView>(Resource.Id.webView);
        textView = FindViewById<TextView>(Resource.Id.textView);

        web_view.Settings.JavaScriptEnabled = true;
        web_view.SetWebViewClient(new SMOSWebViewClient());
        web_view.LoadUrl("https://stns.egyptair.com");
    }

    public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
    {
        Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);

        base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
    }
}

public class SMOSWebViewClient : WebViewClient
{
    public override bool ShouldOverrideUrlLoading(WebView view, IWebResourceRequest request)
    {
        view.LoadUrl(request.Url.ToString());
        return false;
    }

    public override void OnPageFinished(WebView view, string url)
    {
        view.EvaluateJavascript("document.getElementsByClassName('notf')[0].innerHTML;", new JavascriptResult());
    }
}

public class JavascriptResult : Java.Lang.Object, IValueCallback
{
    public string Result;

    public void OnReceiveValue(Java.Lang.Object result)
    {
        string json = ((Java.Lang.String)result).ToString();
        Result = json;
        MainActivity.textView.Text = Result.Replace("\"", string.Empty);
    }
}
0
ответ дан 24 November 2019 в 12:34
поделиться

Используйте addJavascriptInterface () , чтобы добавить объект Java в среду Javascript. Пусть ваш Javascript вызовет метод этого объекта Java для предоставления его «возвращаемого значения».

18
ответ дан 24 November 2019 в 12:34
поделиться

Вот хак, как это сделать:

Добавьте этого клиента в свой WebView:

final class MyWebChromeClient extends WebChromeClient {
        @Override
        public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
            Log.d("LogTag", message);
            result.confirm();
            return true;
        }
    }

Теперь в вашем вызове javascript выполните:

webView.loadUrl("javascript:alert(functionThatReturnsSomething)");

Теперь в вызове onJsAlert «сообщение» будет содержать возвращаемое значение.

63
ответ дан 24 November 2019 в 12:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: