修改的bug記錄

bug1:字符串問題

首先復現bug:點擊URL,然後connect,出現了“load  url” ,將其韓文的意思改變即可。
進入message的目錄:packages/apps/Mms/res 進入資源文件,英文默認是values,韓文是values-ko。
在source insight中導入項目,同步文件,韓文xml亂碼,因爲上鎖,即加密。此時用UltraEdit編輯。

cd  L7-R1
cd  android   編譯在android目錄下
.build_target.sh  L7-R1  -j2  systemimage     編譯
如果編譯完成,相應的apk文件的時間就會更新
然後找到apk文件,複製到桌面
在cmd中執行   adb  install  -r  文件   就可以安裝到手機上,進行查看修改的結果

比如我編輯的Mms的內容,會有相應的Mms.apk,這是就應該進入Mms的目錄下,

git  status   查看狀態
git  pull   將別人的代碼拉下來,得到別人最新的代碼,之後再提交自己的代碼
git status  會發現自己修改過的文件變爲了紅色
git  add  [文件目錄]   (目錄是紅的文件名)
git  status  會發現紅色變成的綠色
git  commit  -m  “niejianjian  [版本號]  日期  問題描述”
git  status  綠色的也消失
git  push   提交服務器



bug2:自我練習回退操作

由於我之前提交了(commit)  了 settings.IAB 文件,所以執行git  reflog會出現如下內容:
ef474dc  HEAD@{0}:commit  :add  settings.IAB
60628de  HEAD@{1} : pull  : Fast-foreard
418cb03
git  reset  60628de     回退對應的操作(撤銷)
git  status   此時查看狀態,發現又回到了add操作以前了
git  pull   取回更新
git  status  查看狀態
    (有問題就進行處理,如需git  checkout  --)
git  push  提交服務器
    (Everything  up-to-date)顯示已經更新了



bug3: end key結束應用,使其不出現在recent

要求就是在應用界面,點擊end key,回到桌面,並且terminating 當前的app。使其不要出現在rencent中。
之前end key的操作就是直接將home key的值給了它,讓它執行home的操作。
首先就是獲得topActivity的名字,然後獲得當前應用的pid。然後如果這個應用不在白名單中,就直接執行remove,銷燬這個應用

// keyCode = KeyEvent.KEYCODE_HOME;  [Niejianjian 0916 delete ]

	// The following contents : Niejianjian 0916 add
	// String oldTopAcName = null;
	String nowTopAcName = null;
	// int persistentId = 0;
 	ActivityManager am = (ActivityManager)mContext.getSystemService(Context.ACTIVITY_SERVICE);
	if(mActivityManager != null && down){
	ComponentName cn = mActivityManager.getRunningTasks(1).get(0).topActivity;
	oldTopAcName = cn.getClassName();

	List<ActivityManager.RecentTaskInfo> recentTasks = am.getRecentTasksForUser(
               1, ActivityManager.RECENT_IGNORE_UNAVAILABLE, UserHandle.CURRENT.getIdentifier());
	ActivityManager.RecentTaskInfo recentInfo = recentTasks.get(0);
	persistentId = recentInfo.persistentId;
	}
							 
	// Go home!
	if(!down){
	if(!SystemProperties.getBoolean("persist.sys.keyguard.lock", false)
		&& !SystemProperties.getBoolean("persist.sys.factorykit.keytest", false)) {   
        if(!mHomeLongPressed) {
        	boolean ignoreGoHome=false;
                if(mActivityManager != null){
                        ComponentName cn = mActivityManager.getRunningTasks(1).get(0).topActivity;
			nowTopAcName = cn.getClassName();
											
			android.util.Log.i("KEY_Niejianjian_Test","oldTopAcName = " + oldTopAcName );
			if (!oldTopAcName.contains("com.android.launcher2.Launcher") && !oldTopAcName.contains("com.bns.ptt.daehap.a1") 
				&& !oldTopAcName.contains("com.android.dialer") && !oldTopAcName.contains("com.android.music")){
				android.util.Log.i("KEY_Niejianjian_Test","oldTopAcName = " + oldTopAcName + " & persistentId = " +persistentId );
				if(oldTopAcName.contains("com.android.deskclock")){
					Settings.System.putInt(mContext.getContentResolver(),"com.android.deskclock.remove.key",1);
				}
				if(oldTopAcName.contains("com.android.contacts")){
					Settings.System.putInt(mContext.getContentResolver(),"com.android.contacts.remove.key",1);
				}
				am.removeTask(persistentId, ActivityManager.REMOVE_TASK_KILL_PROCESS);
			}										
			Log.d("cgp","current activity className:"+cn.getClassName());
                        if(cn.getClassName().equals(filterActivityName[0]) || cn.getClassName().equals(filterActivityName[1])){
				ignoreGoHome = true;
                       	}	
                 }
                 Log.d("cgp","ignoreGoHome:"+ignoreGoHome);
                 if(!ignoreGoHome){
                       launchHomeFromHotKey();
                 }
            } 
            return -1;
     }




bug4:end key no tone sound

在keycode == KeyEvent.KEYCODE_ENDCALL_HOME中,加上以下代碼,就獲得獲得系統聲音了
			AudioManager audioManagerw = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
			if (audioManagerw != null && down && repeatCount==0) {
				audioManagerw.playSoundEffect(AudioManager.FX_KEY_CLICK);
			}



bug5:PTT Key 和power同時點擊過快時,出現的問題

鎖屏的流程是這樣的,當點擊power -> screen off -> LockScreen onCreate 
在screen off狀態,點擊ptt key,就是點亮屏幕,然後調出ptt界面,撥出電話。
如果點擊了power,極短的時間之後點擊ptt鍵,就會沒有出現LockScreen。最後跟蹤流程,發現點擊power之後,延遲了500ms才調用的LockScreen
mHandler.postDelayed(mLockKeyEnable, 50);
將500ms改爲50ms,就很大程度的避免了這個問題。



bug6:ptt key和power點擊過快

正常流程是power滅屏,起lockscreen,然後ptt,亮屏,銷燬lockscreen,然後起ptt界面,ptt finished,lockscreen 起。
有時候會出現這樣一個bug,也是極快點擊的情況下,偶爾會出現ptt界面和lock screen界面同時出現,當ptt finished的時候,就會出現黑屏。
這是因爲ptt界面起的時候,要判斷當前的界面如果是鎖屏,就會銷燬鎖屏,然後彈出ptt界面。
增加判斷,當起lockscreen的是,判斷當前界面是不是ptt,如果是的話,就重複延遲發送,每過100ms,判斷一下,直到當前界面不是ptt的時候,再啓動lockscreen界面
private Runnable mLockKeyEnable = new Runnable() {
        @Override
        public void run() {
        	//Log.d("chen","LockKey Runnable");
			if(!mLockKeyHandle)
				return;
			//Log.d("chen","mLockKeyEnable Runnable : mPowerManager.isScreenOn()="+mPowerManager.isScreenOn());
			// niejianjian 20151029 add "&& lockFlags"
			if(mPowerManager.isScreenOn() && lockFlags)
				return;	

			// niejianjian 2015 add and modified following contents
			ComponentName cn = mActivityManager.getRunningTasks(1).get(0).topActivity;	
			android.util.Log.i("NieJianJian_LockSreen","class --> PhoneWindowManager  ||| mLockKeyEnable ---> topAtyName = " + cn.getClassName());
			if (cn.getClassName().equals("com.bns.ptt.daehap.a1.ui.callactivity.CallUIActivity")){		
				lockFlags = false;
				ii++;
				android.util.Log.i("NieJianJian_LockSreen","++++++++++++++++++++ " + ii);
				mHandler.postDelayed(mLockKeyEnable, 100);
			} else {
				try {
					android.util.Log.i("NieJianJian_LockSreen","--------------------- " + ii);
					lockFlags = true;
					mLockKeyHandle = false;
					Intent lock = new Intent();
					lock.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
					lock.setClassName("com.unc.lockscreen","com.unc.lockscreen.LockSreen");
							
					mContext.startActivityAsUser(lock, UserHandle.CURRENT);
					ii = 0;
				} catch (ActivityNotFoundException e) {
					Slog.w(TAG, "No activity to handle assist action.", e);
				}
			}	      
        }
	};



bug7:快速多次點擊power key 會出現亮屏時出現lockscreen界面

在lockscreen的locksreen.java文件中,會修改下面這個值,lockscreen開啓後,會將下值修改爲true。

android.os.SystemProperties.getBoolean("persist.sys.keyguard.lock", false)
點擊power鍵的時候,就會判斷這個值,來決定lockscreen的銷燬和開起。
由於點擊過快,發送還有50ms的延遲,就會出現錯誤。
if (!down) {
	mHandler.postDelayed(new Runnable() {
	@Override
	public void run(){
		if(android.os.SystemProperties.getBoolean("persist.sys.keyguard.lock", false))
		{	
			//android.util.Log.i("NieJianJian_LockSreen","class --> PhoneWindowManager  |||  run()" );
			KeyLockDisable();
		}
	}
	},500);
}


















發佈了36 篇原創文章 · 獲贊 21 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章