Я создаю эту тему, потому что ответы в аналогичных темах не работали в моем случае. Я пытаюсь опубликовать простое приложение для веб-просмотра, и на некоторых страницах есть видео с YouTube. Они продолжают играть после того, как экран заблокирован на Android 7.0 и ниже (кажется, отлично работает на Android 8), и это является причиной отклонения приложения.
Я попытался добавить разрешение состояния сети, а также использовать «onPause», как я рекомендовал в других подобных темах. Если я вставлю какой-нибудь код, который использует onPause (независимо от того, буду ли я потом использовать Resume или нет), приложение скомпилируется, и в тот момент, когда оно запускается на моем телефоне, оно исчезает через секунду (я начинаю думать, что, возможно, приложение приостанавливается после запуска). В настоящее время мой код таков, что я использовал onPause без сбоев, но, возможно, неправильно, потому что звук продолжает воспроизводиться. Я использую только Android Studio, без рамок.
Я заменил реальный URl на test.com с целью публикации здесь. Вот код, который я использую в MainActivity:
package com.test.moqtasvatba;
import android.content.Intent;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import com.google.firebase.appindexing.Action;
import com.google.firebase.appindexing.FirebaseAppIndex;
import com.google.firebase.appindexing.FirebaseUserActions;
import com.google.firebase.appindexing.Indexable;
import com.google.firebase.appindexing.builders.Actions;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebView webView = (WebView) findViewById(R.id.webView);
webView.getSettings().setDomStorageEnabled(true);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
webView.loadUrl("https://www.test.com");
webView.setWebViewClient(new WebViewClient());
// ATTENTION: This was auto-generated to handle app links.
Intent appLinkIntent = getIntent();
String appLinkAction = appLinkIntent.getAction();
Uri appLinkData = appLinkIntent.getData();
}
/**
* ATTENTION: This was auto-generated to implement the App Indexing API.
* See https://g.co/AppIndexing/AndroidStudio for more information.
*/
public Action getIndexApiAction() {
return Actions.newView("Main", "https://www.test.com");
}
@Override
public void onStart() {
super.onStart();
// ATTENTION: This was auto-generated to implement the App Indexing
API.
// See https://g.co/AppIndexing/AndroidStudio for more information.
FirebaseAppIndex.getInstance().update(new
Indexable.Builder().setName("Main").setUrl("https://www.test.com").build());
FirebaseUserActions.getInstance().start(getIndexApiAction());
}
@Override
public void onStop() {
// ATTENTION: This was auto-generated to implement the App Indexing API.
// See https://g.co/AppIndexing/AndroidStudio for more information.
FirebaseUserActions.getInstance().end(getIndexApiAction());
super.onStop();
}
WebView webView; // Initialize this somewhere
@Override
protected void onPause(){
super.onPause();
if(webView != null){
webView.onPause();
webView.pauseTimers();
}
}
@Override
protected void onResume(){
super.onResume();
if(webView != null){
webView.onResume();
webView.resumeTimers();
}
}
}
Основной файл активности
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
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:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/webView"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
/>
</android.support.constraint.ConstraintLayout>
И AndroidManifest:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.test.moqtasvatba">
<uses-permission android:name="android.permission.INTERNET"></uses-
permission>
<uses-sdk
android:minSdkVersion="15"
android:targetSdkVersion="26" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:scheme="https"
android:host="www.test.com" />
</intent-filter>
</activity>
</application>
</manifest>
Я был бы очень признателен за несколько советов о том, как правильно использовать onPause и где его разместить, чтобы приложение не останавливалось сразу после открытия.