Mostrar pantalla de bienvenida sólo cuando el lanzamiento de la aplicación del lanzador

Hrishikesh Kokate:

Tengo mi SplashActivityde esta manera:

public class SplashActivity extends Activity {

    Handler Handler;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);

        Handler = new Handler();
        Handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                Intent intent = new Intent(SplashActivity.this, MainActivity.class);
                startActivity(intent);
                finish();
            }
        }, 1500);

        Intent appLinkIntent = getIntent();
        String appLinkAction = appLinkIntent.getAction();
        Uri appLinkData = appLinkIntent.getData();
    }
}

Y su declaración de AndroidManifext.xmlla siguiente manera:

<activity
    android:name=".SplashActivity"
    android:theme="@style/Splash"
    android:launchMode="singleTop">

    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>

    <meta-data
        android:name="android.app.shortcuts"
        android:resource="@xml/shortcuts"/>

    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />

        <data
            android:host="brokenhearts.ml"
            android:scheme="http"
            android:pathPattern="/*"/>
    </intent-filter>

    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />

        <data
            android:host="brokenhearts.ml"
            android:scheme="https"
            android:pathPattern="/*"/>
    </intent-filter>

    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />

        <data
            android:host="www.brokenhearts.ml"
            android:scheme="http"
            android:pathPattern="/*"/>
    </intent-filter>

    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />

        <data
            android:host="www.brokenhearts.ml"
            android:scheme="https"
            android:pathPattern="/*"/>
    </intent-filter>
</activity>

Estoy usando WebViews en mi aplicación. El problema es que cada vez que un usuario pulsa sobre un enlace de mi página web en alguna otra actividad de mi aplicación, se parte de SplashActivitytodo de nuevo. Que de una manera correcta, ya que es donde he añadido las intenciones. Sin embargo, me gustaría saber si hay alguna otra manera con esta configuración para mostrar la pantalla de inicio sólo cuando la aplicación se inicia desde el lanzador o del intento de URL (cuando la aplicación no se está ejecutando) y no cuando la intención URL se desencadena cuando la aplicación se está ejecutando en primer plano.

Si no es posible con esta puesta a punto, ¿cuál es la otra manera de que pueda ir sobre esto?

MJM:

Compruebe si se appLinkData nula continuación, mostrar SplashScreen demás iniciar MainScreen

public class SplashActivity extends Activity
{
    Handler Handler;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);

         Intent appLinkIntent = getIntent();
        String appLinkAction = appLinkIntent.getAction();
        Uri appLinkData;
        if(appLinkAction!=null)
        appLinkData = appLinkIntent.getData();

        if(appLinkData!=null)
        {
        Intent intent = new Intent(SplashActivity.this, MainActivity.class);
                                    startActivity(intent);
                                    finish();
        finish();
         return;
        }else
        {

        Handler = new Handler();
        Handler.postDelayed(new Runnable()
                            {
                                @Override
                                public void run()
                                {
                                    Intent intent = new Intent(SplashActivity.this, MainActivity.class);
                                    startActivity(intent);
                                    finish();
                                }
                            },
                1500);

       }
    }
}

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=205438&siteId=1
Recomendado
Clasificación