• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            xiaoguozi's Blog
            Pay it forword - 我并不覺的自豪,我所嘗試的事情都失敗了······習慣原本生活的人不容易改變,就算現狀很糟,他們也很難改變,在過程中,他們還是放棄了······他們一放棄,大家就都是輸家······讓愛傳出去,很困難,也無法預料,人們需要更細心的觀察別人,要隨時注意才能保護別人,因為他們未必知道自己要什么·····
                 摘要: 廣播接收器:   廣播接收者(BroadcastReceiver)用于監聽系統事件或應用程序事件,通過調用Context.sendBroadcast()、Context.sendOrderedBroadcast()可以向系統發送廣播意圖,通過廣播一個意圖(Intent)可以被多個廣播接收者所接收,從而可以在不用修改原始的應用程序的情況下,讓你對事件作出反應。   &n...  閱讀全文
            posted @ 2012-06-07 23:09 小果子 閱讀(2837) | 評論 (0)編輯 收藏

            網上找到的,HTC One X,三星i9000 cm9 4.0.4測試通過,在此記錄一下,大伙需要的話就拿去吧..


            1. Android 2.3(不包括)以下,通過獲取aidl遠程服務接口TelephoneyManager來調用它的answerRingingCall方法(ps: 關于此方法具體做法,由于時間關系,我這里就不詳細說啦,大家Google一下吧)

                    TelephonyManager tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
                    Class c 
            = Class.forName(tm.getClass().getName());
                    Method m 
            = c.getDeclaredMethod("getITelephony");
                    m.setAccessible(
            true);
                    ITelephony telephonyService;
                    telephonyService 
            = (ITelephony) m.invoke(tm);

                    
            // Silence the ringer and answer the call!
                    telephonyService.silenceRinger();
                    telephonyService.answerRingingCall();



            2. Android 2.3(包括)以上,如果照樣使用TelephoneyManager獲取到的answerRingingCall方法的話,就會拋沒有 android.permission.MODIFY_PHONE_STATE權限異常,其實你已經配了這個權限的了,但是不好意思,你的App不是系統 軟件,沒有系統簽名,所以還是不能調用,除非,你root了你的手機,把你的app裝到系統軟件里面去,所以這里使用另外一種方法實現自動接聽這個行為 了,詳細如下:

            剛開始我用這段代碼的,發現三星機型可以,但HTC(如: G10 , One X)不行,

             Intent intent = new Intent("android.intent.action.MEDIA_BUTTON");
             KeyEvent keyEvent 
            = new KeyEvent(KeyEvent.ACTION_DOWN,  KeyEvent.KEYCODE_HEADSETHOOK);
             intent.putExtra(
            "android.intent.extra.KEY_EVENT",keyEvent);
             sendOrderedBroadcast(intent,
            "android.permission.CALL_PRIVILEGED");
             intent 
            = new  Intent("android.intent.action.MEDIA_BUTTON");
             keyEvent 
            = new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_HEADSETHOOK);
             intent.putExtra(
            "android.intent.extra.KEY_EVENT",keyEvent);
             sendOrderedBroadcast(intent,
            "android.permission.CALL_PRIVILEGED");



            后來又google到了這段代碼,經過測試,完全好使..


            Intent localIntent1 = new Intent(Intent.ACTION_HEADSET_PLUG);
            localIntent1.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
            localIntent1.putExtra(
            "state"1);
            localIntent1.putExtra(
            "microphone"1);
            localIntent1.putExtra(
            "name""Headset");
            CallingActivity.
            this.sendOrderedBroadcast(localIntent1,"android.permission.CALL_PRIVILEGED");

            Intent localIntent2 
            = new Intent(Intent.ACTION_MEDIA_BUTTON);
            KeyEvent localKeyEvent1 
            = new KeyEvent(KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_HEADSETHOOK);
            localIntent2.putExtra(
            "android.intent.extra.KEY_EVENT",localKeyEvent1);
            CallingActivity.
            this.sendOrderedBroadcast(localIntent2,"android.permission.CALL_PRIVILEGED");

            Intent localIntent3 
            = new Intent(Intent.ACTION_MEDIA_BUTTON);
            KeyEvent localKeyEvent2 
            = new KeyEvent(KeyEvent.ACTION_UP,KeyEvent.KEYCODE_HEADSETHOOK);
            localIntent3.putExtra(
            "android.intent.extra.KEY_EVENT",localKeyEvent2);
            CallingActivity.
            this.sendOrderedBroadcast(localIntent3,"android.permission.CALL_PRIVILEGED");

            Intent localIntent4 
            = new Intent(Intent.ACTION_HEADSET_PLUG);
            localIntent4.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
            localIntent4.putExtra(
            "state"0);
            localIntent4.putExtra(
            "microphone"1);
            localIntent4.putExtra(
            "name""Headset");
            CallingActivity.
            this.sendOrderedBroadcast(localIntent4,"android.permission.CALL_PRIVILEGED");
            posted @ 2012-06-07 17:20 小果子 閱讀(2012) | 評論 (2)編輯 收藏
            由于Android安裝包APK文件僅僅是一個簡單的zip包,導致了APK文件很容易被反編譯。這不僅威脅到軟件開發公司及程序開發人員的知識產權,而且成為了惡意程序滋生的溫床。

                那么如何增加APK被破解的難度,保障APK程序的安全性呢?這段時間里,我總結了一些技術上可行的方法。它們包括如下幾篇文章。

             《APK反破解之一:Android Java混淆(ProGuard)》 
             《APK反破解之二:Android APK 簽名比對》 
             《APK反破解之三:NDK編譯.so動態庫》 
             《APK反破解之四:Android代碼動態加載技術》 

                為了方便大家查找,特意在這里做個小結,將連接整理在此,方便大家閱讀。之所以將這幾篇文章的整理稱為“小結”,是因為這遠遠算不上“總結”。希望大家多多交流,隨時留言發表自己的想法,多多補充、指正。謝謝了!

                Android代表了移動互聯網時代的興起,它將廣泛運行在各種移動終端之上。有機構數據預測,移動互聯網時代的終端數量將是PC時代終端設備數 量的10倍以上。并且移動終端本身的特點決定了它比PC更為私有化。因此它的安全性、隱私保護性將比PC時代的安全和隱私保護更為受到用戶、媒體和機構的 關注。

                Android這個可愛的小綠人從出生到現在,滿打滿算也只有三周歲而已。它的安全領域存在著太多的空白等著我們去開拓和填補。這既是挑戰,也是 機遇。希望大家能借看雪論壇Android軟件安全板塊這個平臺,多多交流,相互學習,共同迎接移動互聯網軟件安全的春天!
            posted @ 2012-05-24 17:12 小果子 閱讀(614) | 評論 (0)編輯 收藏
            做Android應用,不可避免的會與SQLite打交道。隨著應用的不斷升級,原有的數據庫結構可能已經不再適應新的功能,這時候,就需要對SQLite數據庫的結構進行升級了。

              SQLite提供了ALTER TABLE命令,允許用戶重命名或添加新的字段到已有表中,但是不能從表中刪除字段。

              并且只能在表的末尾添加字段,比如,為 Subscription添加兩個字段:    

            1 ALTER TABLE Subscription ADD COLUMN Activation BLOB;
            2 ALTER TABLE Subscription ADD COLUMN Key BLOB;

              另外,如果遇到復雜的修改操作,比如在修改的同時,需要進行數據的轉移,那么可以采取在一個事務中執行如下語句來實現修改表的需求。

              1. 將表名改為臨時表

            ALTER TABLE Subscription RENAME TO __temp__Subscription;

              2. 創建新表

            CREATE TABLE Subscription (OrderId VARCHAR(32) PRIMARY KEY ,UserName VARCHAR(32) NOT NULL ,ProductId VARCHAR(16) NOT NULL);

              3. 導入數據  

            INSERT INTO Subscription SELECT OrderId, “”, ProductId FROM __temp__Subscription;

              或者  

            INSERT INTO Subscription() SELECT OrderId, “”, ProductId FROM __temp__Subscription;

              * 注意 雙引號”” 是用來補充原來不存在的數據的
              4. 刪除臨時表  

            DROP TABLE __temp__Subscription;

              通過以上四個步驟,就可以完成舊數據庫結構向新數據庫結構的遷移,并且其中還可以保證數據不會應為升級而流失。

              當然,如果遇到減少字段的情況,也可以通過創建臨時表的方式來實現。

            posted @ 2012-05-09 10:55 小果子 閱讀(805) | 評論 (0)編輯 收藏
            http://www.oschina.net/question/231733_44154
            posted @ 2012-05-08 17:06 小果子 閱讀(86) | 評論 (0)編輯 收藏
            僅列出標題
            共58頁: First 12 13 14 15 16 17 18 19 20 Last 
            99久久国产综合精品网成人影院 | 久久久久久亚洲精品影院| 久久精品无码免费不卡| 久久综合视频网站| 久久久噜噜噜www成人网| 久久久久中文字幕| 久久久久久久97| 久久本道综合久久伊人| 亚洲色大成网站WWW久久九九| 精品久久久久久久| 国内精品九九久久精品| 久久久99精品成人片中文字幕 | 无码人妻久久久一区二区三区 | 久久毛片一区二区| 91精品免费久久久久久久久| 久久久久久精品无码人妻| 久久se这里只有精品| 久久精品成人免费看| 99精品国产99久久久久久97 | 精品久久综合1区2区3区激情| 午夜精品久久久久久毛片| | 久久精品无码av| 久久国产精品99精品国产987| 婷婷伊人久久大香线蕉AV| 要久久爱在线免费观看| 国产精品免费久久| 青青青国产精品国产精品久久久久| 久久久久久久97| 国产精品99久久免费观看| 久久天天躁狠狠躁夜夜网站| 亚洲伊人久久大香线蕉综合图片| 狠狠色丁香久久婷婷综合图片| 久久一区二区三区免费| 久久久久久久综合综合狠狠| 久久精品免费网站网| 久久久久一本毛久久久| 亚洲?V乱码久久精品蜜桃 | 久久久久久午夜成人影院| 国产成人精品久久一区二区三区 | 国产日韩久久久精品影院首页|