检查调用特定组件的Intent是否可调用?

时间:2015-12-26 17:05:30

标签: java android android-intent

我的目的是打开系统设置应用的数据使用摘要视图(未记录; from this Stack Overflow answer):

config.wordcount = {

// Whether or not you want to show the Paragraphs Count
showParagraphs: false,

// Whether or not you want to show the Word Count
showWordCount: false,

// Whether or not you want to show the Char Count
showCharCount: true,

// Whether or not you want to count Spaces as Chars
countSpacesAsChars: true,

// Whether or not to include Html chars in the Char Count
countHTML: false,

// Maximum allowed Word Count, -1 is default for unlimited
maxWordCount: 400,

// Maximum allowed Char Count, -1 is default for unlimited
maxCharCount: 400};

是否可以检查此组件是否存在以及意图是否将成​​功执行?

similar question在Android(5.0)模拟器中给出了对此意图不起作用的答案(导致“设置”应用程序多次崩溃 - see stacktrace)。下面的代码答案返回true(即成功),即使我的上述代码会使Settings应用程序崩溃。到目前为止,由于没有设置数据计划,我的活动意图仅在仿真器上崩溃(?)

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);

From this answer..

private boolean isCallable(Intent intent) {
    List<ResolveInfo> list = getPackageManager().queryIntentActivities(intent, 
        PackageManager.MATCH_DEFAULT_ONLY);
    return list.size() > 0;
}

From this one..

感谢。

1 个答案:

答案 0 :(得分:2)

您尝试过的代码片段之所以说该组件可用是因为该组件可用。尝试启动时,组件会崩溃。无论这是由于模拟器错误,Android错误,还是您正在开始一项未被第三方应用程序记录的活动这一事实,我无法说。

  

是否可以检查此组件是否存在

使用问题中的代码段。在这种情况下,组件存在。

  

是否可以检查...意图是否会成功执行?

不一般。第三方应用程序由第三方编写。它们不仅可能存在错误/限制,而且您无法确定它们是否来自您的应用。