2016-12-21 5 views
3

Ich habe eine Einkaufsliste App in Android-Studios codiert. Meine App hat einen Begrüßungsbildschirm. Wenn ich die App installiere, wird sie zweimal installiert. Wenn ich eins entferne, deinstalliert das andere auch. Ich habe versucht, den ersten Intent-Filter auf dem Begrüßungsbildschirm zu löschen, aber dann hatte ich keinen Begrüßungsbildschirm mehr. Ich möchte, dass mein Splashscreen bleibt. Wie löst man das? Mein Manifest sieht wie folgt aus:App ist zweimal installiert

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

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 

    <activity 
     android:name=".SplashScreen" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 


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

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

Antwort

8

Die App ist nur ein.

Sie haben einfach zwei Aktivitäten (und dann 2 Symbole), die als Startprogramm funktionieren können.

Wenn Sie nicht möchten, müssen Sie diesen Teil einer in Aktivität entfernen

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

oder anstatt sie zu entfernen Begrüßungsbildschirm läuft, können Sie es 'default' statt' LAUNCHER' machen und die Nutzung Aktivitätsname anstelle von 'MAIN' um Verwechslungen zu vermeiden –

1

<category android:name="android.intent.category.LAUNCHER" /> diese Android erzählt wollen, dass die Aktivität der App Launcher sichtbar sein. Um es zu lösen, entfernen Sie die intent-filter von MainActivity.

+0

Danke, ich habe das Problem jetzt verstanden. – Blnpwr

2

Ihre Hauptabsicht in XML löschen und so etwas wie dieses schaffen, die und öffnen Sie Ihre MainActivity

public class SplashsScreen extends Activity { 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.splash_screen); 
    new Handler().postDelayed(new Runnable(){ 
      @Override 
      public void run() { 
       Intent mainIntent = new Intent(SplashsScreen.this, MainActivity.class); 
       SplashsScreen.this.startActivity(mainIntent); 
       SplashsScreen.this.finish(); 
      } 
     }, 1500); // 1500 ms = 1.5 s 
    } 
} 
+1

Dies erlaubt Ihnen auch, vor dem Start der Hauptanwendung nach Berechtigungen zu suchen. – Thorviory

+0

Vielen Dank. Wo kann ich diese Berechtigungen sehen? Könnten Sie bitte etwas genauer sein? – Blnpwr

+1

Nun, Sie würden Ihre Berechtigungen in XML zuerst hinzufügen, über dem '' Tag, zum Beispiel' ', die Internet-Erlaubnis verwenden würde und dann etwas wie dies in Code über 'ActivityCompat.requestPermissions (this, new String [] {Manifest.permission.CAMERA}, 1);' – Thorviory

Verwandte Themen