我目前正在尝试在软件中设置Android系统时间.是的,我知道有很多人尝试过 - 而且像我现在一样失败了.:-)
但我也知道可以在ROOTED手机上设置Android系统时间.我已经测试了一个名为ClockSync的应用程序.
所以我想知道如何在ROOTED设备上设置系统时间.请不要说这是不可能的.:-)
到目前为止我尝试的是设置以下权限:
<uses-permission android:name="android.permission.SET_TIME_ZONE"/>
<uses-permission android:name="android.permission.SET_TIME"/>
Run Code Online (Sandbox Code Playgroud)
然后在我的代码中:
AlarmManager a = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
long current_time_millies = System.currentTimeMillis();
try {
a.setTime((long)current_time_millies+10000);
} catch (Exception e) {
// Why is this exception thrown?
}
Run Code Online (Sandbox Code Playgroud)
但我总是得到以下例外:
java.lang.SecurityException:setTime:用户10054和当前进程都没有android.permission.SET_TIME.
我在ClockSync完美运行的同一设备上进行测试.那么 - 我做错了什么?或者更好:你能提供有效的测试代码吗?
我在一个活动中有两个textview,由xml定义 - 两者都是背景颜色灰色.在我的应用程序中,我将其中一个textviews背景颜色设置为蓝色.这按预期工作.
但是:当我转动设备(旋转),或离开应用程序并再次返回时,其他文本视图也是蓝色 - 与故意设置的颜色相同......!
当我离开应用程序并再次启动它时,第二个textview保持蓝色.当我停止运行应用程序(kill)并再次启动时,第二个textview为灰色.但是,一旦我旋转设备或下次启动应用程序,就会出现同样的问题.
问题设备正在运行4.1.1. - 在2.3.4设备上运行相同的应用程序没有问题.
SDK Tools 22.0.1,Eclipse Juno Service Release 2 32位,Windows 7 64位
编辑: SDK Tools 14上的相同问题,Windows 7 32位上的Eclipse Indigo SR1 32位
我不知道那里发生了什么.这是某种不受欢迎的MAGIC.请你帮助我好吗?

下面是真正的源代码,没有修改问题项目.
MainActivity.java:
package com.example.test;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView tv1 = (TextView) findViewById(R.id.textView1);
tv1.setBackgroundColor(0xff33b5e5);
}
}
Run Code Online (Sandbox Code Playgroud)
acitivity_main.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/textView1"
android:layout_width="fill_parent"
android:layout_height="100dp"
android:background="#cccccc" />
<TextView
android:id="@+id/textView2"
android:layout_width="fill_parent"
android:layout_height="100dp"
android:layout_marginTop="20dp"
android:background="#cccccc" …Run Code Online (Sandbox Code Playgroud) 我编写了一个非常小的程序,当该行包含某个字符串时,它将一个文件的所有行复制到另一个文件。这是完整的来源:
f_in = open("all.txt", "r")
f_out = open("all.out", "w")
for line in f_in:
if "<title>" in line:
f_out.write(line)
f_out.close()
f_in.close()
Run Code Online (Sandbox Code Playgroud)
这非常有效,直到遇到 all.txt 中的 utf-8 字符。然后它失败了:
UnicodeDecodeError:“charmap”编解码器无法解码位置 7102 中的字节 0x9d:字符映射到 <未定义>
现在我做了一个糟糕的解决方法:在目录 \Python\Lib\encodings 中,我复制了 utf-8.py 并将其重命名为 cp1252.py。
从现在开始 - 上面的小程序运行没有问题。但必须有一个更优雅的解决方案。你能告诉我需要什么才能让 Phyton 使用 utf-8.py 而不是 cp1252.py 吗?
我确信这是可能的,不需要大量的转换和解码等等——只需告诉Python使用另一种解码而不是cp1252.py。