Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android 為【apk】文件簽名,增加修改系統時間等權限

Android 為【apk】文件簽名,增加修改系統時間等權限

編輯:Android開發實例

昨天寫應用,涉及到需要修改系統時間等操作,查了一下Android 的設置源碼,裡面的一個方法如下:

 

   public void onDateSet(DatePicker view, int year, int month, int day) {
        Calendar c = Calendar.getInstance();

        c.set(Calendar.YEAR, year);
        c.set(Calendar.MONTH, month);
        c.set(Calendar.DAY_OF_MONTH, day);
        long when = c.getTimeInMillis();

        if (when / 1000 < Integer.MAX_VALUE) {
            SystemClock.setCurrentTimeMillis(when);
        }
        updateTimeAndDateDisplay();
    }

 

從上面的 Android 應用程序源碼可以看出,修改系統日期需要為Calendar 設置年月日,然後通過調用 SystemClock.setCurrentTimeMillis 方法,設置系統日期,既然源碼是這樣寫的,那我們也依樣畫葫蘆來學一下吧,下面是通過使用datePicker修改日期的代碼:

 

canlendar = Calendar.getInstance();
                    year = datePicker.getYear();
                    month = datePicker.getMonth();
                    day = datePicker.getDayOfMonth();
                    canlendar.set(Calendar.YEAR, year);
                    canlendar.set(Calendar.MONTH, month);
                    canlendar.set(Calendar.DAY_OF_MONTH, day);
                    long when = canlendar.getTimeInMillis();
                    if (when / 1000 < Integer.MAX_VALUE) {
                        SystemClock.setCurrentTimeMillis(when);
                        tv_date.setText(canlendar.get(Calendar.YEAR) + "/"
                                + ((canlendar.get(Calendar.MONTH) + 1)) + "/"
                                + canlendar.get(Calendar.DAY_OF_MONTH));
                    }

 

 

Tip:每次需要使用Calendar 必須獲得一次實例,否則會它會使用上一次獲取實例的日期格式,修改的時候可能會有點小問題

可是,照著上面的代碼敲了之後,運行卻出現如下的警告:

 

網上查了一下,說SystemClock.setCurrentTimeMillis  這個函數需要root 權限或者運行在系統進程中才可以用,通過參考了這一篇文章我得到了解決辦法:http://dev.10086.cn/blog/?uid-49302-action-viewspace-itemid-907 ,不過這篇文章的第二個辦法說得有點不是很清楚,這裡我重新為大家詳細說一下

先進入 Android 源碼目錄 F:\android_source\build\target\product\security ,具體機器目錄自己選擇。找到 【platform.pk8】和【platform.x509.pem】這兩個文件,這裡為了方便將它們復制到根目錄,如:F:\sign 文件夾內,本來下一步就是需要打包jar 包了,不過裡我們在android系統的源碼內找到 out 編繹目錄下

signApk.jar 這個包,可以自行打jar 包或者下載我這個jar 包都是可以的,下載地址:signapk 請自行將後綴名改為.jar 格式,把此jar 包放於F:\sign  文件內,打開dos 操作界面,定們到F:\sign,如下:,接著輸入如下命令:java -jar signapk.jar platform.x509.pem platform.pk8 test.apk testnew.apk ,在dos 命令名如下圖:,其中set.apk 是指我們要簽名的原始文件apk,後面setnew.apk 是指我們簽名後輸出的apk文件的名稱

Tip:在簽名的時候必須將set.apk事先用rar 文件打開,進入META-INF目錄下,將CERT.SF和CERT.RSA這兩個文件刪除掉,再執行如上操作。到了這一步,程序己經可以正常安裝了。

如果提示 FaiLure [INSTALL_FAILED_ALREADY_EXISTS],請使用如下命令,將應用程序移除:,uninstall 後面字符是指應用程序所在的包名,再運行adb install [package name] 就可以安裝成功。

Tip:不要忘了在你的manifest文件下注冊android:sharedUserId="android.uid.system" 。

如果你照著如上的步驟一步一步寫的話,保證可以成功修改系統的時間或者日期等操作。

轉自:http://www.cnblogs.com/TerryBlog/archive/2010/09/10/1823103.html

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved