Это вызвано тем, что тесты выполняются с использованием MSTest (Visual Studio используется просто как оболочка). MSTest будет маскировать эти возникающие исключения, и они никогда не всплывают в Visual Studio. Если вы запускаете тесты в режиме отладки, он должен работать.
Если вы щелкнете правой кнопкой мыши по тесту (ам) в Test View и выберете их для отладки, он должен выполнить код через IDE, а исключения должны прерваться соответствующим образом.
Я столкнулся с этим в Hero, используя то, что я считал опубликованным API. В конце концов, я использовал тест, чтобы увидеть, может ли быть получено намерение:
private boolean isCallable(Intent intent) {
List<ResolveInfo> list = getPackageManager().queryIntentActivities(intent,
PackageManager.MATCH_DEFAULT_ONLY);
return list.size() > 0;
}
Используется, когда я обычно просто начинаю действие:
final Intent intent = new Intent("com.android.camera.action.CROP");
intent.setClassName("com.android.camera", "com.android.camera.CropImage");
if (isCallable(intent)) {
// call the intent as you intended.
} else {
// make alternative arrangements.
}
Очевидно: если вы пойдете по этому пути - используя непубличные API - вы обязательно должен предоставить запасной вариант, который, как вы знаете, определенно работает. Он не обязательно должен быть идеальным, это может быть тост, в котором говорится, что это не поддерживается для этого телефона / устройства, но вам следует избегать неперехваченного исключения. конец очевиден.
Я нахожу Open Intents Registry of Intents Protocols весьма полезным, но я не нашел эквивалента списка намерений типа TCK, который абсолютно необходимо поддерживать, и примеров того, какие приложения делать разные телефоны.