检查意图是活动或服务还是没有

时间:2016-08-23 21:03:51

标签: android android-intent android-activity android-service

我有一个Intents的ArrayList,我怎样才能检查给定位置的意图是否包含一个Activity,Service或什么都没有?

Intent intent = intents.get(id);
context.startActivityForResult(intent,1);

您如何检查索引ID的意图是否可以通过startActivityForResult正确传递,@Html.TextBoxFor(m => m.zipCode, new {data_bind = "textInput: zipcode, event: { keyup: trimField, change: trimField }", maxlength = "5"}) 强调活动类。

2 个答案:

答案 0 :(得分:3)

嗯,这不是一个优雅的解决方案,但你可以尝试获得这样的意图类名称:

Intent it = new Intent(ctx, AnotherActivity.class);
it.getComponent().getClassName() // output com.package.app.MainActivity

Intent it = new Intent(ctx, JustService.class);
it.getComponent().getClassName() // output com.package.app.JustService

并使用

switch (...getClassName()) {
    case 'com.package.app.JustService' {
         //todo
    }
}

您可以使用getShortClassName()方法,它将输出没有默认包的类名:

.JustService

对于空意图,我会检查是否为空。

答案 1 :(得分:1)

  

如何检查给定位置的意图是否包含活动,服务或什么都没有?

我将把它解释为"我怎样才能看到Intent可以解析哪些组件?"。

如果是,请使用PackageManagerqueryIntentActivities()queryIntentServices()queryBroadcastReceivers()。请注意,Intent可用于任何,任何或所有这些。

  

您如何检查索引ID的意图是否可以通过startActivityForResult正确传递

你不是没有找到编写活动的开发人员并且问他们,嘿,这会返回结果吗?"您可以将众所周知的结果返回操作字符串列入白名单(例如ACTION_PICKACTION_GET_CONTENTACTION_OPEN_DOCUMENT),但您无法知道任意活动是否会返回结果给定Intent