Android-приложение для адаптивного веб-сайта вылетает при загрузке на реальном телефоне - PullRequest
0 голосов
/ 16 октября 2018

Это моя первая попытка кодирования Android.У нас есть отзывчивый веб-сайт, и я называю себя написанием кода для приложения для Android, чтобы люди просто щелкали по значку после загрузки приложения и заходили на наш сайт.На симуляторе приложение отлично работает на различных тестовых телефонах, но когда я загружаю APK для распространения, и кто-то скачивает и пытается запустить его, он падает даже до появления заставки.Может кто-нибудь, пожалуйста, посмотрите на мой код и скажите мне, что не так.Кажется, происходит сбой только на Android версии 6.0 или выше.На старых телефонах и планшетах работает нормально.Вот копии моего "SplashScreenActivity.java, моего MainActivity.java и моего AndroidManifest.xml из Android Studios версии 3.2.1. Любая помощь будет принята.

SplashScreenActivity.java

    package com.wastefreemail.wfmconnect;
    import android.content.Intent;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.Window;
    import android.view.WindowManager;
    public class SplashScreenActivity extends AppCompatActivity {

    private int SLEEP_TIMER = 3;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);




        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.activity_splash_screen);
        getSupportActionBar().hide();


        LogoLauncher logoLauncher = new LogoLauncher();
        logoLauncher.start();


    }

    private class LogoLauncher extends Thread{
      public void run(){
          try{
              sleep(1000 * SLEEP_TIMER);
          }catch(InterruptedException e){
              e.printStackTrace();

          }

          Intent intent = new Intent(SplashScreenActivity.this,         MainActivity.class);
          startActivity(intent);
          SplashScreenActivity.this.finish();
      }
    }
}

MainActivit.java

    package com.wastefreemail.wfmconnect;


    import android.app.Activity;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.Window;
    import android.view.WindowManager;
    import android.webkit.WebSettings;
    import android.webkit.WebView;
    import android.webkit.WebViewClient;



    public class MainActivity extends Activity {

    public WebView web1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);

        WebView web1 = (WebView)findViewById(R.id.web1);
        WebSettings webSettings = web1.getSettings();
        webSettings.setJavaScriptEnabled(true);
        web1.loadUrl("https://www.wastefreemail.com");
        web1.setWebViewClient(new WebViewClient());
    }
 }

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.wastefreemail.wfmconnect">

<uses-permission android:name="android.permission.INTERNET"></uses-permission>

<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">

    </activity>
    <activity android:name=".SplashScreenActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

</manifest>

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

Похоже, что может быть проблема в вашей заставке.Попробуйте приведенный ниже код и дайте мне знать для дальнейших обновлений.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.activity_splash_screen);

    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {

            Intent intent = new Intent(SplashScreenActivity.this,MainActivity.class);
            startActivity(intent);
            finish();
        }
    },5000); //here 5000 represents 5 seconds. Change this according to your need.
}

Редактировать

Если даже это не сработает, тогда создайте новый стиль в вашем styles.xmlфайл.

<style name="AppTheme.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>

И примените этот стиль к своей деятельности в файле manifest.xml.

<activity
    android:name=".SplashScreenActivity"
    android:theme="@style/AppTheme.NoActionBar" />

РЕДАКТИРОВАТЬ

Этот метод SupportActionBarвыбрасывает исключение Null Pointer.Используйте этот код в своей активности.Это решит проблему.

    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.activity_splash_screen);
    try{
        getSupportActionBar().hide();
    } catch (NullPointerException e){
        e.printStackTrace();
    }
0 голосов
/ 16 октября 2018

попробуйте,

enter image description here

файл манифеста

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.chetan.testapp">

    <uses-permission android:name="android.permission.INTERNET"/>

    <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>
        </activity>
    </application>

</manifest>

MainActivity.java

package com.wastefreemail.wfmconnect;



   import android.app.Activity;
import android.os.Bundle;
import android.view.Window;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;



public class MainActivity extends Activity {

    public WebView web1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
       // requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);

        web1 = (WebView)findViewById(R.id.webView);
        WebSettings webSettings = web1.getSettings();
        webSettings.setJavaScriptEnabled(true);
        web1.loadUrl("http://www.wastefreemail.com/");
        web1.setWebViewClient(new WebViewClient());
    }
}

xml

<WebView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/webView"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

Надеюсь, что помощь полная.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...