我在Android-Studios中编写了一个购物清单App。我的应用确实有一个启动画面。当我安装应用程序时,它会安装两次。当我卸载一个时,另一个卸载。我试图在启动画面上删除第一个intent过滤器,但后来我没有启动画面了。我希望我的防溅板能够保留下来。怎么解决?我的清单看起来像这样:
<?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>
答案 0 :(得分:9)
该应用只有一个。
您只需要两个活动(然后是2个图标)即可作为启动器。
如果您不想要,则必须在一个活动中删除此部分
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
答案 1 :(得分:2)
删除您在XML中的主要意图并创建这样的内容,这将运行启动画面,然后打开您的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
}
}
答案 2 :(得分:1)
<category android:name="android.intent.category.LAUNCHER" />
这告诉Android你希望从app启动器中看到活动。要解决此问题,请从intent-filter
删除MainActivity
。