我遇到了一个奇怪的问题,我得到了一个允许在Android设备(字体大小设置器)上自由更改字体大小的应用程序.它使用内省来调用一些内部的Android apis.要进行此调用,需要以下权限:android.permission.CHANGE_CONFIGURATION.它在Android 4.0下运行起来就像一个魅力,在它不再起作用的情况下高达4.2.挖掘日志我发现我无法更新字体大小,因为它错过了这个权限.为了检查有效权限,我在检查与我的应用程序对应的PackageInfo时得到了这些权限
requestedPermissions = {java.lang.String[2]@830038778728}
[0] = {java.lang.String@830038778760}"android.permission.CHANGE_CONFIGURATION"
[1] = {java.lang.String@830038778896}"android.permission.WRITE_SETTINGS"
requestedPermissionsFlags = {int[2]@830038779016}
[0] = 1
[1] = 3
Run Code Online (Sandbox Code Playgroud)
有人对正在发生的事情或任何解决方法的想法有任何线索吗?非常感谢您阅读我.
每个请求,AndroidManifest.xml文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="fr.gatay.android.fss"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="14"/>
<uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
<application android:label="@string/app_name" android:icon="@drawable/app_icon">
<activity android:name=".MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud) 我的应用程序中出现了一个奇怪的问题,我将快速解释全局架构,然后深入解释我的问题.
我使用一个服务来填充HashMap<DomainObject,Boolean>来自我的数据库(JPA驱动)的数据,然后通过EJB远程方法调用(使用Apache Wicket)返回到我的视图.在这部分中,我DomainObject为返回的地图添加了一个新内容,以便存储来自最终用户的任何新值.
当用户在其浏览器中点击"添加"按钮时,会出现问题,我尝试在地图中检索新创建的项目,但它失败了.通过使用调试器,我面临以下事情.
假设HashMap<DomainObject, Boolean> map并且DomainObject do两个变量很有趣,我在调试器中得到以下结果
map.keySet();给我一个对应的对象do(甚至@whatever simili-reference是相同的),hashcode()在两个对象上返回相似的值并equals()在两个返回之间true
map.containsKey(do); 回报 false
map.get(do); 回来null,很奇怪,因为我的钥匙似乎在map.
假设我新创建的项是枚举的第一个键keySet(),我执行以下操作:
map.get(new ArrayList(map.keySet()).get(0)),它返回null.
如果它可以帮助,通过将断点附加到我DomainObject.equals()和DomainObject.hashcode()方法,我发现map.get()只是调用hashcode()而不是equals().
我找到的唯一解决方法是在现有的地图上重新创建一个新地图new HashMap(map),在这个新地图中,我根本没有问题通过其键查找对象.
我希望这里有人可以指出我发生了什么,谢谢.
使用环境:
- OS X 10.7.1下的Sun Java 1.6.0_26 x64
- Debian 6.0.2下的OpenJDK 1.6.0_18 x64(2.6.32)
- Apache Wicket 1.4.17
- Oracle Glassfish 3.1.1
- JBoss Hibernate 3.6.5
DomainObject 代码: …
我试图从我的Groovy代码实例化一个Java抽象类.考虑以下Java抽象类(从类中剥离出非相关处理):
public abstract class StackOverflow{
public abstract String answerMe();
}
Run Code Online (Sandbox Code Playgroud)
我可以通过这种方式轻松地在Groovy中实例化它,并且调用answerMe()将触发正确的输出:
StackOverflow stack = [answerMe : { "Answer" }] as StackOverflow
Run Code Online (Sandbox Code Playgroud)
现在,如果我修改StackOverflow类在构造函数中添加一个String参数,如下所示:
public abstract class StackOverflowStr{
public StackOverflowStr(String s){}
public abstract String answerMe();
}
Run Code Online (Sandbox Code Playgroud)
我真的不知道如何实例化我的对象,我尝试了很多东西,但我似乎无法找到正确的语法,有人有任何线索吗?