使用自定义操作开始活动

我正在寻找使用自定义操作在我的应用程序中开始一个活动。 我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中发出警告。 除了应用程序未启动之外,用户将不会遇到任何麻烦。

(如果旅游应用程序崩溃,用户将永远不会原谅你)。

希望这会有所帮助! 快乐的编码。 🙂