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() 或类似的。

我想我发现了你的错误,请尝试一下:删除 &lt;/uses-permission&gt; 在这两条线上,应该可以工作

【讨论】:

Log.*() 更好,但 System.out.println() 有效。 相同。后者只是前者的简短版本。 正如@Romain 所说, 真的是 的简写,它是空的。

以上是关于Android OS 2.2 权限:我完全不知道为啥这段简单的代码不起作用。我究竟做错了啥?的主要内容,如果未能解决你的问题,请参考以下文章

QNX Hypervisor 2.2 用户手册1.2 支持的架构硬件和访客OS

不推荐使用的导入 android.os.AsyncTask 的代码 [重复]

使 OS 磁盘读取缓存无效

如何将发送高级短信权限设置为始终允许在 android 中?

Android 11 运行时权限

是否有关于iOS 6权限的开发人员指南?