1

我正在尝试编写一个类BaseActivity来处理一些通用行为。

其中之一是捕获对应用程序图标的点击并重新指向第一个活动。这听起来很简单,但这BaseActivity将在一个库项目中。我不能使用明确的意图(由类定义)。相反,我正在尝试使用通用意图:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (item.getItemId() == android.R.id.home) {
        // app icon in action bar clicked: go back home
        Intent intent = new Intent(Intent.ACTION_MAIN);
        intent.addCategory(Intent.CATEGORY_LAUNCHER);
        intent.setPackage(getPackageName());
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(intent);
        return true;

    } else {
        return super.onOptionsItemSelected(item);
    }
}

我的问题是我得到了一个ActivityNotFoundException,我不明白为什么。

我能做些什么?

4

1 回答 1

0

听起来您正在getLaunchIntentForPackage()PackageManager. 它将包名称作为参数并创建一个Intent来启动该包的主要活动。这样,您就不需要指明应该在包中启动的特定类。

当前实现将首先查找 category 中的主要活动CATEGORY_INFO,然后查找 category 中的主要活动 CATEGORY_LAUNCHER,或者如果都没有找到则返回 null。

于 2012-08-31T23:06:02.143 回答