【发布时间】:2015-12-26 17:05:29
【问题描述】:
我的意图是打开系统设置应用程序的“数据使用摘要”视图(未记录;from this Stack Overflow answer):
Intent openIntent = new Intent(Intent.ACTION_MAIN);
openIntent.setComponent(new ComponentName("com.android.settings", "com.android.settings.Settings$DataUsageSummaryActivity"));
openIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(openIntent);
是否可以检查该组件是否存在以及intent是否会成功执行?
similar question 给出的答案不适用于 Android (5.0) 模拟器中的此意图(导致“设置”应用多次崩溃 - see stacktrace)。下面的代码答案返回 true(即成功),即使我上面的代码会使设置应用程序崩溃。由于没有数据计划集,我的活动意图到目前为止只在可能的模拟器上崩溃(?)
private boolean isCallable(Intent intent) {
List<ResolveInfo> list = getPackageManager().queryIntentActivities(intent,
PackageManager.MATCH_DEFAULT_ONLY);
return list.size() > 0;
}
和
boolean activityExists = intent.resolveActivityInfo(getPackageManager(), 0) != null;
谢谢。
【问题讨论】:
-
“导致设置应用程序多次崩溃”——请编辑您的问题并提供完整的堆栈跟踪。您链接到的答案是正确的,因此我们需要堆栈跟踪来告知您哪里出错了。
-
@CommonsWare 我已经添加了它,但这里的问题不应该与我正在做的任何特殊事情有关。这是由于“带宽模块”被禁用而仅在模拟器中发生的问题,不应“在野外”发生。我只是想知道是否有任何方法可以检查/捕获它以防万一。 编辑:刚刚修复了 pastebin 格式。
标签: java android android-intent