0

我正在尝试从服务启动主屏幕。我使用了以下代码

           Intent startMain = new Intent(Intent.ACTION_MAIN);
           startMain.addCategory(Intent.CATEGORY_LAUNCHER);
           startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
           startActivity(startMain);

它在 Android 2.3 中运行良好,但在 4.0 中却不行

在 4.0 中,它显示一个列表来选择应该是默认屏幕的内容。

我需要和 2.3 一样的效果

提前致谢

4

2 回答 2

0

你可以试试这个添加看看它是否有效。

而不是这个类别, startMain.addCategory(Intent.CATEGORY_LAUNCHER);

尝试这个,

startMain.addCategory(Intent.CATEGORY_HOME);
于 2013-01-22T10:01:56.467 回答
0

主屏幕可以从您的清单中触发。开始您的活动,您希望拥有如下主屏幕:

<activity
        android:name="com.example.HomeScreenActivity"
        android:screenOrientation="portrait"
        android:configChanges="orientation|keyboardHidden|screenSize"
        android:label="@string/title_activity_home_screen"
        android:theme="@style/FullscreenTheme" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

如果您想在几毫秒后切换到下一个屏幕,请创建您的活动,如下所示:

public class HomeScreenActivity extends Activity {

protected boolean _active = true;
protected int _splashTime = 3000; // time to display the splash screen in ms

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setTitle("Your Activity Title");
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.activity_home_screen);

    // thread for displaying the HomeScreen
    Thread homeTread = new Thread() {
        @Override
        public void run() {
            try {
                int waited = 0;
                while(_active && (waited < _splashTime)) {
                    sleep(100);
                    if(_active) {
                        waited += 100;
                    }
                }
            } catch(InterruptedException e) {
                // do nothing
            } finally {
                finish();
                startActivity(new Intent("com.example.SecondViewActivity"));
            }
        }
    };
    homeTread.start();

}

@Override
public boolean onTouchEvent(MotionEvent event) {
    if (event.getAction() == MotionEvent.ACTION_DOWN) {
        _active = false;
    }
    return true;
}

}
于 2013-01-22T10:06:10.150 回答