最近遇到了一个问题,感觉需要记录一下。
要打开开发者面板,之前的代码如下:
Intent intent = new Intent(Settings.ACTION_APPLICATION_DEVELOPMENT_SETTINGS);
context.startActivity(intent);
在我的机器上测试通过,但是发布出去后后台反馈会了崩溃错误:
android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.settings.APPLICATION_DEVELOPMENT_SETTINGS }
仔细看了看,出错的机型的os版本都是2.3的,于是找了台2.3的来进行测试。确实存在这样的错误,那么说明Settings.APPLICATION_DEVELOPMENT_SETTINGS这个字段在2.3版本里是不成立的。
在网上查看的api里Settings.APPLICATION_DEVELOPMENT_SETTINGS是起始于API 3,这样的话2.3的时候已经存在了。为了搞清楚,在网上下载了2.3版本Settings的源码,发现该action为<action android:name="com.android.settings.APPLICATION_DEVELOPMENT_SETTINGS"/>,但是api中却显示为“android.settings.APPLICATION_DEVELOPMENT_SETTINGS”。那么错误就是在这里出现的,至于从哪个版本开始改变的,查了一会没有查到。由于时间问题,待以后再做详细查询。
不过问题该如何解决?可以做版本判断,用不同的字符串action来初始化Intnet。不过还可以用另外的方法,代码如下:
ComponentName componentName = new ComponentName("com.android.settings", "com.android.settings.DevelopmentSettings");
Intent intent = new Intent();
intent.setComponent(componentName);
intent.setAction("android.intent.action.View");
context.startActivity(intent);
这样的话就可以不用判断版本。
这个问题还是因为版本差异引起的,自己在这方面一直没有系统的学习,每次都是出现问题才去了解一点。这样其实在解决问题时会比较慢,而且不会提前避免这样的错误,看来该找时间好好学习一下这方面了。
以Settings.APPLICATION_DEVELOPMENT_SETTINGS打开开发者面板出错总结