gpt4 book ai didi

Android 自定义 Intent 无法启动 Activity(是的,我包括了 DEFAULT 类别)

转载 作者:行者123 更新时间:2023-11-30 04:37:37 25 4
gpt4 key购买 nike

我搜索了又搜索,但似乎找不到这个关于自定义 Intent 的特定问题的答案。

我有一个包含 4 个 Activity 的应用程序,其中 1 个是主要的设置 Activity ,另外 3 个代表我呈现给用户的不同屏幕。我正在尝试使用自定义 Intent 来启动不同的 Activity 。

这是我的 AndroidManifext.xml:

<?xml version="1.0" encoding="utf-8"?>

<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".Activities.REDB_main" android:label="@string/app_name"
android:launchMode="singleTop">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".Activities.ChooseCards" android:launchMode="singleTop">
<intent-filter>
<action android:name="@string/ACTION_VIEW" />
<action android:name="@string/ACTION_REFRESH" />
<category android:name="@string/CATEGORY_SHUFFLE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity android:name=".Activities.SelectSets" android:launchMode="singleTop">
<intent-filter>
<action android:name="@string/ACTION_VIEW" />
<action android:name="@string/ACTION_REFRESH" />
<category android:name="@string/CATEGORY_SELECT_SETS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity android:name=".Activities.SelectCards" android:launchMode="singleTop"
android:permission="android.permission.ACCESS_CHECKIN_PROPERTIES">
<intent-filter>
<action android:name="@string/ACTION_VIEW" />
<action android:name="@string/ACTION_REFRESH" />
<category android:name="@string/CATEGORY_SELECT_CARDS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>

我为每个应用程序创建一个类别,然后创建我希望它处理的两种操作。我知道我可以使用显式 Intent ,但由于我想执行不同的操作,我认为使用隐式 Intent 会更好。

我从我的 main 中调用我的第一个真正的 Activity :

 Intent intent = new Intent().setAction(getString(R.string.ACTION_VIEW));
intent.addCategory(getString(R.string.CATEGORY_SHUFFLE));
startActivity(intent);

当然,我之所以在这里,是因为上面永远找不到符合intent的activity。错误消息正确地说明了操作和类别,除非我错了,否则上面的 list 会正确创建 intent-filters。

在网上搜索,我似乎总能找到同时使用数据的示例。我胡乱添加数据只是为了看看是否有必要,但这似乎并不重要。

稍微不同的是,除了 intents 之外,是否还有其他方法可以控制程序的流程?我有两个操作的原因是因为 1 切换 View 而另一个只是刷新数据,这样当用户稍后切换到屏幕时,他们不会看到它快速刷新数据,而只是看到新的东西。

最佳答案

I know that I could use explicit intents, but since I want to have different actions I figured that making the implicit intents would work better.

我很怀疑。大多数情况下你使用 <intent-filter>当您希望您自己的应用程序以外的东西启动组件时(例如,第三方应用程序)。

另外,我怀疑你想要 android:launchMode="singleTop"在所有这些上。而且我很确定你不想android:permission="android.permission.ACCESS_CHECKIN_PROPERTIES"在最后一个上,因为那时您很可能无法启动自己的 Activity。

The error messages states the action and category correctly and unless I'm wrong, the above manifest creates the intent-filters correctly.

我从未见过 Android 应用程序将字符串资源用于 <category>元素。也许这会增加你的困难。此外,由于 <category>元素对你没有任何好处,我可以看到(除了你的 LAUNCHER 一个),我不清楚你为什么把它们放在那里。

我建议您只删除 <intent-filter>元素并使用显式 Intents .

关于Android 自定义 Intent 无法启动 Activity(是的,我包括了 DEFAULT 类别),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6576700/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com