近期遇到了一个问题,感觉须要记录一下。
要打开开发人员面板,之前的代码例如以下:
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);
这种话就能够不用推断版本号。
这个问题还是由于版本号差异引起的,自己在这方面一直没有系统的学习,每次都是出现故障才去了解一点。
这样事实上在解决这个问题时会比較慢。并且不会提前避免这种错误,看来该找时间好好学习一下这方面了。