困扰我的Intent匹配问题——待解决


假设一个应用程序有多个Activity
MainActivity:
<intent-filter>
  <action android:name="android.intent.action.MAIN" />
  <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
SecondActivity:
  <intent-filter>
  <action android:name="android.intent.action.GET_CONTENT" />

  <category android:name="android.intent.category.OPENABLE" />
  <category android:name="android.intent.category.DEFAULT" />

  <data android:mimeType="audio/*" />
  <data android:mimeType="image/*" />
  <data android:mimeType="video/*" />
  <data android:mimeType="text/x-vCalendar" />
</intent-filter>
能否在匹配SecondActivity的同时,再启动MainActivity呢?

20160323

匹配一个action多个category和一个type是可行的  多个type是不行的  OK

那么问题变成  能否通过匹配到的一个非主入口的Activity而调用这个Activity所在应用的主入口?

已知:通过packageManager.getLaunchIntentForPackage("应用包名") 可以获取到能够启动这个应用的主入口intent对象

所以问题转变成:能否通过匹配条件获取到应用的包名

如何从intent入手呢?毕竟intent只是设置了几个属性,关键的操作还是在startActivity这个方法里面,所以查看startActivity(intent)这个方法具体实现才能找到思路!

然而发现用Eclipse查看源码时受限,不方便

posted @ 2015-12-22 17:21  洱海  阅读(171)  评论(0编辑  收藏  举报
.First { margin: 10px 0; font-family: 'Microsoft Yahei'; text-align: left; padding: 6px 20px; color: #fff; background: #55895B; font-size: 20px; border-radius: 4px; clear: both; } .Second { margin: 10px 0; font-family: 'Microsoft Yahei'; padding: 6px 20px; background: #93C8A2; color: white; font-size: 18px; border-radius: 4px; clear: both; } .Third { margin: 10px 0; padding: 6px 20px; font-family: 'Microsoft Yahei'; margin: 15px 0; font-size: 16px; color: black; background: #C6EFD2; border-radius: 4px; clear: both; } .note { margin: 10px 0; padding: 15px 20px 15px 60px; background: #FCFAA9 url('http://images.cnblogs.com/cnblogs_com/libaoheng/305804/o_yellow-pin.png') no-repeat 20px 0; font-size: 15px; font-family: 'Microsoft Yahei'; box-shadow: 0 0 8px #aaa; clear: both; } .demo { text-align: left; padding: 6px 20px; overflow: auto; border-radius: 4px; background: orange; color: #fff; font-size: 16px; clear: both; } .cnblogs_Highlighter { border: solid 1px #ccc; clear: both; } .cnblogs_code { background: #EFFFF4; border: solid 0px #939393; font-size: 14px; clear: both; padding: 10px 20px; } .cnblogs_code pre { font-size: 14px; } .cnblogs_code span { font-family: Courier New; font-size: 14px; }