Веб-просмотр Android не может быть включен. Пауза без сбоя приложения (необходимо остановить воспроизведение YouTube в фоновом режиме) - PullRequest
0 голосов
/ 28 июня 2018

Я создаю эту тему, потому что ответы в аналогичных темах не работали в моем случае. Я пытаюсь опубликовать простое приложение для веб-просмотра, и на некоторых страницах есть видео с 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 и где его разместить, чтобы приложение не останавливалось сразу после открытия.

...