Settings--解决的bug总结xuqiu

This blog post summarizes bug fixes in Android settings, covering issues related to location mode, Bluetooth connectivity, data usage, and more. Solutions include handling device connection states, addressing UI inconsistencies, and resolving problems with third-party integrations." 50496017,4913993,FTP中文文件名乱码问题解决方案,"['FTP上传下载', '字符编码']
摘要由CSDN通过智能技术生成

一:是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、付费专栏及课程。

余额充值