现在的位置: 首页 > 综合 > 正文

android当没有系统软件工具,调用系统工具出错的解决

2013年06月23日 ⁄ 综合 ⁄ 共 1186字 ⁄ 字号 评论关闭

最近开发遇到一个问题,也苦了很久,一直没找到合适的方法,今天经大神点拨,算是不错的解决了问题。什么问题呢?就是调用系统工具,比如系统照相机、系统浏览器,你或许会说调用随便一百度就有,对,很简单,但是,现如今刷机成了一种潮流,当遇到一款手机刷了机也ROOT鸟,把系统带的工具给删掉了,一调用系统工具就会报错,说找不到指定的Activity,这时就该愁了,我首先想到的是有木有什么方法可以检查系统工具没木有啊,百度加谷歌,木有方法,最后看到个通过应用包查找应用在不,代码如下:

通过包名判断
public boolean checkBrowser(String packageName) {   
    if (packageName == null || "".equals(packageName))   
        return false;   
    try {   
        ApplicationInfo info = getPackageManager().getApplicationInfo(   
                packageName, PackageManager.GET_UNINSTALLED_PACKAGES);   
        return true;   
    } catch (NameNotFoundException e) {   
        return false;   
    }   
}  

还有种是通过包名判断应用的Activity,代码如下:

Intent intent = new Intent(Intent.ACTION_VIEW);   
intent.setClassName("com.android.settings", //$NON-NLS-1$   
        "com.android.settings.InstalledAppDetails"); //$NON-NLS-1$   
intent.putExtra("com.android.settings.ApplicationPkgName", //$NON-NLS-1$   
        mCurrentPkgName);   
List<ResolveInfo> acts = getPackageManager().queryIntentActivities(   
        intent, 0);   
if (acts.size() > 0) {   
    startActivity(intent);   
} else {   
    Toast.makeText(this,   
            getString(R.string.failed_to_resolve_activity),   
            Toast.LENGTH_SHORT).show();   
}  

但是我这时发现不知道系统工具的包名,傻了吧,经过一番周折,有的人说不用考虑那些刷过的手机,但是我发现QQ微信都是做过判断的,那么我还是要做,最后通过一个大神指点,豁然开朗,就搞定了,虽然算不上很完美的解决方案,但也凑活,总比没有好。其实很简单,就是捕获异常,当没有系统工具时,会有一个异常,捕获了然后吐司告知用户无系统应用。

要是哪个大神有更好的方法,请不吝指教,多谢。

【上篇】
【下篇】

抱歉!评论已关闭.