Я попытался создать приложение для своего веб-сайта с веб-просмотром и индикатором выполнения, видимость веб-просмотра остается скрытой до загрузки страницы. Теперь я попытался добавить баннерную рекламу google admob в боттон, и она не отображается, я использую относительный макет, и реклама отображается в предварительном просмотре xml, но не в приложении.
Activity_main. xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<WebView
android:id="@+id/activity_main_webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:visibility="gone" />
<com.google.android.gms.ads.AdView
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:id="@+id/adView"
android:layout_width="wrap_content"
android:layout_height="60dp"
android:background="#000000"
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true"
ads:adSize="BANNER"
ads:adUnitId="ca-app-pub-3467064285652442/5673227109">
</com.google.android.gms.ads.AdView>
<ProgressBar
android:id="@+id/progressBar1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
app:layout_constraintStart_toStartOf="@+id/activity_main_webview"
app:layout_constraintTop_toTopOf="@+id/activity_main_webview" />
</RelativeLayout>
The MainActivity. java:
package com.dhruv.spadebee;
import android.content.Intent;
import android.graphics.Bitmap;
import android.view.View;
import android.widget.ProgressBar;
import android.util.Log;
import android.view.MenuItem;
import android.view.Window;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.PopupMenu;
import androidx.appcompat.widget.Toolbar;
import androidx.core.content.ContextCompat;
import android.view.View;
import com.google.android.gms.ads.MobileAds;
import com.google.android.gms.ads.initialization.InitializationStatus;
import com.google.android.gms.ads.initialization.OnInitializationCompleteListener;
import com.onesignal.OSNotificationAction;
import com.onesignal.OSNotificationOpenResult;
import com.onesignal.OneSignal;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.view.Window;
import android.view.WindowManager;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.webkit.WebSettings;
import android.os.Bundle;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.Toast;
import org.json.JSONObject;
import org.jsoup.Jsoup;
import org.jsoup.helper.Validate;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.IOException;
public class MainActivity extends AppCompatActivity {
String ShowOrHideWebViewInitialUse = "show";
private WebView mWebView;
private ProgressBar spinner;
private AdView mAdView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MobileAds.initialize(this, new OnInitializationCompleteListener() {
@Override
public void onInitializationComplete(InitializationStatus initializationStatus) {
}
});
mAdView = findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest);
mAdView.setVisibility(View.VISIBLE);
getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
getSupportActionBar().setCustomView(R.layout.custom_toolbar);
getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#080808")));
final ImageView img = (ImageView) findViewById(R.id.toolbar_top);
img.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//Creating the instance of PopupMenu
PopupMenu popup = new PopupMenu(MainActivity.this, img);
//Inflating the Popup using xml file
popup.getMenuInflater().inflate(R.menu.popup_menu, popup.getMenu());
//registering popup with OnMenuItemClickListener
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.one:
mWebView.loadUrl("https://spadebee.com/");
break;
case R.id.two:
mWebView.loadUrl("https://spadebee.com/category/general/");
break;
case R.id.three:
mWebView.loadUrl("https://spadebee.com/category/programming/");
break;
case R.id.four:
mWebView.loadUrl("https://spadebee.com/category/gaming/");
break;
case R.id.five:
mWebView.loadUrl("https://spadebee.com/category/android/");
break;
case R.id.six:
mWebView.loadUrl("https://spadebee.com/about");
break;
}
return true;
}
});
popup.show();//showing popup menu
}
});//closing the setOnClickListener method
OneSignal.startInit(this)
.inFocusDisplaying(OneSignal.OSInFocusDisplayOption.Notification)
.unsubscribeWhenNotificationsAreDisabled(true)
.setNotificationOpenedHandler(new ExampleNotificationOpenedHandler())
.init();
mWebView = (WebView) findViewById(R.id.activity_main_webview);
// Enable Javascript
WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
// Stop local links and redirects from opening in browser instead of WebView
spinner = (ProgressBar)findViewById(R.id.progressBar1);
mWebView.setWebViewClient(new MyAppWebViewClient() {
@Override
public void onPageStarted(WebView webview, String url, Bitmap favicon) {
if (ShowOrHideWebViewInitialUse.equals("show")) {
webview.setVisibility(webview.INVISIBLE);
}
}
@Override
public void onPageFinished(WebView view, String url)
{
mWebView.loadUrl("javascript:(function() { " +
"var head = document.getElementsByClassName('custom-header')[0].style.display='none'; " +
"})()");
mWebView.loadUrl("javascript:(function() { " +
"var head = document.getElementsByClassName('main-navigation')[0].style.display='none'; " +
"})()");
spinner.setVisibility(View.GONE);
mWebView.setVisibility(WebView.VISIBLE);
super.onPageFinished(view, url);
}
});
mWebView.loadUrl("https://spadebee.com/");
}
@Override
public void onBackPressed() {
if (mWebView.canGoBack()) {
mWebView.goBack();
} else {
super.onBackPressed();
}
}
private class ExampleNotificationOpenedHandler implements OneSignal.NotificationOpenedHandler {
// This fires when a notification is opened by tapping on it.
@Override
public void notificationOpened(OSNotificationOpenResult result) {
Log.i("OSNotificationPayload", "result.notification.payload.toJSONObject().toString(): " + result.notification.payload.toJSONObject().toString());
mWebView = (WebView) findViewById(R.id.activity_main_webview);
WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
String appURL = result.notification.payload.launchURL;
Log.i("appURL", appURL);
mWebView.loadUrl("https://spadebee.com");
mWebView.setWebViewClient(new MyAppWebViewClient());
}
}
public class jparser {
public void main(String[] args) throws IOException {
Validate.isTrue(args.length == 1, "usage: supply url to fetch");
String url = args[0];
Document doc = Jsoup.connect(url).get();
Elements links = doc.select("a[href].more-link");
Elements media = doc.select("img");
Elements summary = doc.select("div.entry-summary");
}
}
}
Предварительный просмотр:
Android Предварительный просмотр Studio
Любая помощь относительно того, почему это не работает, будет оценена по достоинству. Я пробовал просмотреть все сообщения здесь, добавив прогресбар и веб-просмотр в линейный макет, установив видимость рекламных просмотров, но ничего не работает.