使用自定义操作开始活动
我正在寻找使用自定义操作在我的应用程序中开始一个活动。 我find了一些答案,但我所做的一切都抛出java.lang.RuntimeException
说没有find活动处理意向{act = com.example.foo.bar.YOUR_ACTION}。
这是我的清单文件中的活动:
<activity android:name=".FeedbackActivity" > <intent-filter> <action android:name="com.example.foo.bar.YOUR_ACTION" /> </intent-filter> </activity>
这就是我开始这个活动的方式:
Intent intent = new Intent("com.example.foo.bar.YOUR_ACTION"); startActivity(intent);
任何帮助将不胜感激。
我认为你的意图是错误的。 尝试像这样:
String CUSTOM_ACTION = "com.example.foo.bar.YOUR_ACTION"; //Intent i = new Intent(this, FeedBackActivity.class); // <--- You might need to do it this way. Intent i = new Intent(); i.setAction(CUSTOM_ACTION); startActivity(i);
我想你需要的是添加一个默认的类别到你的意图filter,例如。
<activity android:name=".FeedbackActivity" > <intent-filter> <action android:name="com.example.foo.bar.YOUR_ACTION" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity>
看到这个答案更多的信息。
只需添加和意图筛选类别为默认。
隐式意图完美工作,在许多情况下,使用Intent-action调用服务/活动的隐式意图比使用类名更好。
在startActivty() / startService()
和正确的上下文之前,你可以使用包pipe理器类中的方法'queryIntentActivities(Intent intent, int flags)'
。
它帮助ActivityManager(负责启动活动)检查Android系统是否与你的Intent有任何匹配。
如果不是,则返回一个列表大小为0或者大于0的列表。
通过这个,你也可以检查你的应用程序是否正在接听电话,在这种情况下,即使你的应用程序没有安装/有一些问题,它不会崩溃,但会在Log中发出警告。 除了应用程序未启动之外,用户将不会遇到任何麻烦。
(如果旅游应用程序崩溃,用户将永远不会原谅你)。
希望这会有所帮助! 快乐的编码。 🙂