修改的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 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);
}


















你可能感兴趣的:(修改的bug记录)