Android OS 2.2 权限:我完全不知道为啥这段简单的代码不起作用。我究竟做错了啥?
Posted
技术标签:
【中文标题】Android OS 2.2 权限:我完全不知道为啥这段简单的代码不起作用。我究竟做错了啥?【英文标题】:Android OS 2.2 Permissions: I have absolutely no idea why this simple piece of code doesn't work. What am I doing wrong?Android OS 2.2 权限:我完全不知道为什么这段简单的代码不起作用。我究竟做错了什么? 【发布时间】:2011-02-24 12:09:50 【问题描述】:我只是在玩一些代码。我创建了一个 Activity 并简单地做这样的事情:
long lo = currentTimeMillis();
System.out.println(lo);
lo *= 3;
System.out.println(lo);
SystemClock.setCurrentTimeMillis(lo);
System.out.println( currentTimeMillis() );
是的,在我的 androidManifest.xml 中,我添加了:
<uses-permission android:name="android.permission.SET_TIME"></uses-permission>
<uses-permission android:name="android.permission.SET_TIME_ZONE"></uses-permission>
没有任何变化。 SystemClock 永远不会重置......它只是不停地滴答作响。 我得到的错误只是说权限“SET_TIME”没有授予程序。保护等级 3。
权限在那里......并且在 2.2 的 API 中说现在支持此功能。我不知道我做错了什么。
如果 android.content.Intent;发挥作用,请解释。我真的不明白意图背后的想法!
感谢您的帮助!
【问题讨论】:
logcat 有什么指示吗? 【参考方案1】:有 SET_TIME_ZONE 权限,但没有 SET_TIME 权限。应用程序无法以编程方式更改系统时钟。
更新
SET_TIME 从 2.2 开始可用,但只能授予系统进程或使用系统签名签名的应用程序。
【讨论】:
根据developer.android.com/reference/android/…,它从 API 8 开始可用。有什么关系? 确实在 2.2 文档中,我刚刚意识到我检查的是 2.0 源代码而不是 2.2。很抱歉造成混乱。我查了2.2源码,SET_TIME权限只能授予使用系统签名签名的应用程序。这意味着您不能使用此权限。 感谢您的澄清。给定权限的保护级别是否记录在任何地方,或者是否需要查看源代码中的 AndroidManifest.xml? 是否可以使用系统签名编写用户级应用程序?如果不是,那么我有点恼火 Android 开发人员为什么会发布这个:( 不,您不能使用系统签名。除非你能从制造商那里得到它。【参考方案2】:使用具有 SET_TIME 权限的 AlarmManager 来设置系统时间似乎可行:)
【讨论】:
你让我头疼不已。谢谢! 您在哪个 API 级别上对此进行了测试?我总是得到一个异常说:“java.lang.SecurityException:setTime:用户10041和当前进程都没有android.permission.SET_TIME。”我在我的清单中设置了权限:“android.permission.SET_TIME”。有人可以确认吗? @Hemeroc 这里也一样。在 API 级别 8 上测试。看起来应用程序必须使用系统证书进行签名。【参考方案3】:System.out.println() 的 insetad 使用 Log.v() 或类似的。
我想我发现了你的错误,请尝试一下:删除
</uses-permission>
在这两条线上,应该可以工作
【讨论】:
Log.*() 更好,但 System.out.println() 有效。以上是关于Android OS 2.2 权限:我完全不知道为啥这段简单的代码不起作用。我究竟做错了啥?的主要内容,如果未能解决你的问题,请参考以下文章
QNX Hypervisor 2.2 用户手册1.2 支持的架构硬件和访客OS
不推荐使用的导入 android.os.AsyncTask 的代码 [重复]