Settings--解决的bug总结xuqiu

一:是A1手机项目中

Location位置信息->Mode模式-->加速定位

BUG描述:之前这个点击打开,然后会弹出第三方的界面对话框,高通代码,我们看不到,选择那个链接地址,由于这个手机没有安装浏览器,所以程序会崩。

知识点

interface IXTSrv
{
    boolean disable();
    boolean getStatus();
    String  getText(int which);
    void showDialog();
    void registerCallback(IXTSrvCb cb);
    void unregisterCallback(IXTSrvCb cb);
}
这个接口是底层写的,他的原理是为什么里面的方法看不到,他会有另外一个中间类来转化到另外一个类,里面来实现这个接口里面的方法,这个接口被高通封了。
这种aidl文件的用法:mXTService = IXTSrv.Stub.asInterface((IBinder)service);固定的
解决的方法:当时是remove();这个preference
新的BUG描述:现在是打开界面是看不到这个控件了,但是如果之前的版本是开了加速定位的,也就是保存了这个开着的值,现在升级版本,你虽然看不到这个控件了,但是这个控件其实还是开着的,就是相当于,这个加速定位还是开着的。现在就想真实的关闭
解决的方法:只要手机开机就会走这个BootCompletedReceiver广播接收者。因为这个广播接受者不能bindService绑定服务,所以将处理的方法,放到他启动的一个服务里面,模仿LocationMode这个类中处理的写法
 	mServiceConn = new XTServiceConnection();
        Intent i = new Intent(IXTSrv.class.getName());
        izatConnResult = getActivity().bindService(i, mServiceConn, Context.BIND_AUTO_CREATE);将i和new出来新的绑定服务。
 private class XTServiceConnection implements ServiceConnection{
        @Override
        public void onServiceConnected(ComponentName name, IBinder service){
            mXTService = IXTSrv.Stub.asInterface((IBinder)service);     
		mXTService.disable();//这句话重要
          }
        @Override
        public void onServiceDisconnected(ComponentName name){
           
    }
	通过mXTService.disable();这句话就可以将状态变为false。然后locationMode每次进入界面的chek状态选择的都是false也就是每次都是关着的状态。


补充:之前的bug是这样的,location->mode里面四个选项,第四个是第三方软件默认是关闭的。
第一个bug描述:比如版本一:打开了第四项,升级到版本二的时候需求是去掉第四项,结果去了,但是其实选项还是开着的,会耗电。
处理:mIZat的点击事件做处理,结果就是使他一直是关闭状态,不让打开
if(null != mIZat){
            mIZat.setOnPreferenceChangeListener(
                new Preference.OnPreferenceChangeListener(){
                    public boolean onPreferenceChange(Preference preference, Object newValue){
                        final boolean chooseValue = (Boolean) newValue;
                        if(chooseValue){
                            try{
                                if(null != mXTService){
                                    mXTService.showDialog();
                                    }
                                }catch(RemoteException e){
                                    e.printStackTrace();
                                }
                        }else{
                            try{
								
                                if(null != mXTService){
                                    mXTService.disable();
                                }
                            }catch(RemoteException e){
                                e.printStackTrace();
                            }
                        }
                        return true;
                    }
                }
            );
最后在前面设状态。
        mIZat.setChecked(mXTService.getStatus());
第二个bug描述:就是上来手机默认初始化时打开这个第三方软件的
处理:

二:是R1手机settings的快捷方式拖出去以后会弹出一个界面
BUG:因为辅助功能和屏幕保护2个不需要,所以要去掉
解决方法:CreateShortcut这个类就是那个快捷方式的activity,进来就执行这个onQueryPackageManager查询方法,将manist中带SHORTCUT这个字段的activity全查出来,显示到这个list上
else if(info.activityInfo.name.endsWith(AccessibilitySettingsActivity.class.getSimpleName())){
				activities.remove(i);
				}
这样就把匹配的值就去了,注意import com.android.settings.Settings.DreamSettingsActivity;加这个导入系统的。
三:是A1手机Settings里面的导航条actionBar全部去掉
解决方法:找到每个界面对应的xml布局文件注销掉<include layout="@layout/add_item_foot" />
搜到每一个include,都注销掉。然后,每一个里面的控件都要找到实例化的都的注销掉
知识点:可以写一个布局,通用这个布局的话就按照上面的那种写法的方式。改也好改。
四:是A1手机Settings里面raderWheel中的问题
BUG:就是查询出设备了,点击连接,同时快速的扣电池。正常来说,已经连上了,但是开机之后发现自动连接不上,还要进去之后才能点击连上。
知识点:
解决的方法:在linearLayout的点击事件里面将editor.putString("RadgerWheel_Connect_Address_old", "null");注销掉,可以解决!经理说,不是这个问题,是sharedpreferences存储问题,需要时间
 
 
 

五:是A1手机Settings里面raderWheel的设备和手机连接之后,点下去设备但是不按上来,点下去之后我关闭蓝牙开关或者退出连接。

BUG:就是按关机键会一直出来呼叫那个界面,意思就是按下了,上来键没执行,所以一直是呼叫状态。

解决方法:

ptt_key_ = characteristic.getIntValue(format, 0);接受设备按键数据是0或者1

if (ptt_key_ == 1) { if (DBG) Log.d(TAG,"CODA BT_PTT_Msg === Pressed");intent.putExtra("event_action", KeyEvent.ACTION_DOWN);} else if (ptt_key_ == 0) { if (DBG) Log.d(TAG,"CODA BT_PTT_Msg === Released");intent.putExtra("event_action", KeyEvent.ACTION_UP);}sendBroadcast(intent);

打完log之后可以看到,广播少发了一条上键的消息,所以要加发一条,分别在:

else if(action.equals("BluetoothDisconnect")){ if(ptt_key_==1){ Intent intent2 = new Intent("com.android.bluetooth.support.BTPTTKey");if (DBG) Log.v("lwn","zoul up");intent2.putExtra("event_action", KeyEvent.ACTION_UP);sendBroadcast(intent2);}

---------------------------------------------设备断开连接

else if(action.equals("BluetoothSwitchOff")){ if(ptt_key_==1){ Intent intent2 = new Intent("com.android.bluetooth.support.BTPTTKey");if (DBG) Log.v("lwn","zoul up");intent2.putExtra("event_action", KeyEvent.ACTION_UP);sendBroadcast(intent2);}

--------------------------------------------关闭蓝牙开关

六:是A1手机Settings里面raderWheel的设备和手机连接之后,关闭设备,关机开机之后显示的还是连接的设备,其实我的设备已经关闭了。

原因:开机之后后台跑的服务,条件是"RadgerWheel_Connect_Address_old"这个地址不为null就连接了。

解决:因为连接上之后,一旦手机断开,或者设备断开,这个时候的RadgerWheel_Connect_Address这个字符串全都应该值为null。

if(! (sharedpreferences.getString("RadgerWheel_Connect_Address_old","null")).equals("null")){ editor.putString("RadgerWheel_Connect_Address","null");//[liuweinan2015-5-11add]editor.commit();//[liuweinan2015-5-11add]mHandler.sendEmptyMessage(0); }

----------------------------------------------------还应该在设备关闭那个地方也加上将当前地址值为null

七:是A1手机Settings里面DataUsageSummary数据流量的问题。

BUG:插上手机卡之后,会显示选择框,紧接着是流量使用周期,旁边是spinner。现在就是进来之后,按下键,会跑到第一个checkBox,再按2次下键才能到了spinner控件上。客户只想按一次。

知识点:当listView需要添加headView的时候,可以通过这个addHeaderView(mHeader, null, false);方法进行添加,如果header不想被选中可以设为false,想被选就设为true

解决方法:因为每个条目都是listView,给每个条目用inflate转化添加

mHeader = (ViewGroup) inflater.inflate(R.layout.data_usage_header, mListView, false);

mListView.addHeaderView(new View(context), null, false);这个是填空的view,将true改为false

        mListView.addHeaderView(mHeader, null, false);将mheader添加上去将,true改为false

新的BUG:虽然可以实现点一次就可以了,但是新的问题,点了spinner会直接到了下面的listView,自己失去焦点了。而且会刷新2秒

解决方法:注销沉睡的2S, mListView.addHeaderView(mHeader, null, true);这个listView的可以点击。

八:是A1手机Settings里面DataUsageSummary数据流量的问题。

BUG:插上卡,点击spinner控件到最下面

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值