当前位置: 编程技术>移动开发
本页文章导读:
▪【破译草稿1】每一步的验证步骤 【破解草稿1】每一步的验证步骤
1、修改了post_userInfo的数据√2、如果还错,就检查url的参数install√3、如果还错,就用手机正常安装一次有你,换个imei用pc装一次有你,对比二者的数据包.........
▪ NSString,char*NSData,NSUrl变换 NSString,char*,NSData,NSUrl转换
1. NSString转化为UNICODE String:
(NSString*)fname = @“Test”;
char fnameStr[10];
memcpy(fnameStr, [fname cStringUsingEncoding:NSUnicodeStringEncoding], 2*([fname length]));
与strcpy相比,memcpy并不是.........
▪ 从起动InCallScreen之后开始说起 从启动InCallScreen之后开始说起
前提:系统为android4.0当android系统接到一个来电的时候,会从framework启动InCallScreen界面,然后当然是停留在这个界面等待响应了。这里有一个InCallTouchUi类,来响.........
[1]【破译草稿1】每一步的验证步骤
来源: 互联网 发布时间: 2014-02-18
【破解草稿1】每一步的验证步骤
1、修改了post_userInfo的数据√
2、如果还错,就检查url的参数
install√
3、如果还错,就用手机正常安装一次有你,换个imei用pc装一次有你,对比二者的数据包
失败的原因
手机激活一次后列表中的设备名字段为htc desire hd故pc也要改成这个
手机换个imei先不激活,让pc直接下一个有你,再激活查看是否有积分×只显示安装,但没有积分
手机激活后,打开offerlist,在用pc offer show down install×只显示安装,但没有积分
手机激活后,打开offerlist,show再用pc down install×只显示安装,但没有积分
手机激活后,offerlist,show,donw,再用pc install√安装了,又有积分
手机激活后,浏览器 offerlist, show, down, pc install √安装了,又有积分
pc激活,浏览器 offerlist, show, down, pc install √安装了,又有积分
imei可能不一定要有效,可以用一半真实一半生成
思路1
install完了以后再show,offer,这两个提交两次
思路2
添加cookie管理属性 httpclient.getParams().setCookiePolicy(
1、修改了post_userInfo的数据√
2、如果还错,就检查url的参数
install√
3、如果还错,就用手机正常安装一次有你,换个imei用pc装一次有你,对比二者的数据包
失败的原因
手机激活一次后列表中的设备名字段为htc desire hd故pc也要改成这个
手机换个imei先不激活,让pc直接下一个有你,再激活查看是否有积分×只显示安装,但没有积分
手机激活后,打开offerlist,在用pc offer show down install×只显示安装,但没有积分
手机激活后,打开offerlist,show再用pc down install×只显示安装,但没有积分
手机激活后,offerlist,show,donw,再用pc install√安装了,又有积分
手机激活后,浏览器 offerlist, show, down, pc install √安装了,又有积分
pc激活,浏览器 offerlist, show, down, pc install √安装了,又有积分
imei可能不一定要有效,可以用一半真实一半生成
思路1
install完了以后再show,offer,这两个提交两次
思路2
添加cookie管理属性 httpclient.getParams().setCookiePolicy(
[2] NSString,char*NSData,NSUrl变换
来源: 互联网 发布时间: 2014-02-18
NSString,char*,NSData,NSUrl转换
1. NSString转化为UNICODE String:
(NSString*)fname = @“Test”; char fnameStr[10]; memcpy(fnameStr, [fname cStringUsingEncoding:NSUnicodeStringEncoding], 2*([fname length])); 与strcpy相比,memcpy并不是遇到'\0'就结束,而是一定会拷贝完n个字节
2. NSString 转化为 char *
NSString * str= @“Test”; const char * a =[str UTF8String];
3.char * 转化为 NSString
NSString *str=[NSString stringWithCString encoding:NSUTF8StringEncoding];
4. char * 转化 NSData
方法一: char * a = (char*)malloc(sizeof(byte)*16); NSData *data = [NSData dataWithBytes: a length:strlen(a)]; 方法二: 转换为NSString: - (id)initWithUTF8String:(const char *)bytes 然后用NSString的 - (NSData *)dataUsingEncoding:(NSStringEncoding)encoding
5. NSData 转化 char *
NSData data ; char* a=[data bytes];
6. NSData 转化 NSString;
NSData* data; NSString* aStr= [NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
7. NSString 转化 NSData对象
NSData* xmlData = [@"testdata" dataUsingEncoding:NSUTF8StringEncoding];
8.NSString 转化 NSURL
//NSURL *url = [NSURL URLWithString:[str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding ]]; NSString *urlString=[@"http://www.google.com/search?client=safari&rls=en&q=搜索&ie=UTF-8&oe=UTF-8" stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
9.NSURL 转化 NSString
NSURL *url=[NSURL URLWithString:urlString]; NSString *s=[[url absoluteString] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSArray *arr = [urlStr componentsSeparatedByString:@"&"]; NSURL *url = [NSURL URLWithString:[[arr objectAtIndex:0] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding ]]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; [request setHTTPMethod:@"POST"]; NSMutableArray *_array = [[NSMutableArray alloc] initWithCapacity:0]; for (int i = 1; i < [arr count]; ++i ){ NSString *str = [arr objectAtIndex:i]; [_array addObject:str]; } [_array componentsJoinedByString:@"&"]; NSData *data = [[_array componentsJoinedByString:@"&"] dataUsingEncoding: NSASCIIStringEncoding]; [request setHTTPBody:data]; // 发送请求并获得服务器反馈的数据 NSData *urldata = [AESEnCDeCViewController Get:url]; // 第一种 转换NSData数据到char*字符串 char * test = (char*)[urldata bytes]; std::string old = deaes(test); // 第二种 转换NSData到UTF8编码的NSString中再转换为char*字符串 // NSString *desStr = [[NSString alloc] initWithData:urldata encoding:NSUTF8StringEncoding]; // const char *desresult = [desStr UTF8String]; // std::string old = deaes(desresult); // 解密字字符串到明文 NSString *oldstr = [[NSString alloc] initWithCString:old.c_str()]; 很多时候软件读取的中文网页编码集是gb2312,所以显示出来的是乱码。这时需要将NSString文字编码转换 1 NSURL *url = [NSURL URLWithString:urlStr]; 2 NSData *data = [NSData dataWithContentsOfURL:url]; 3 NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000); 4 NSString *retStr = [[NSString alloc] initWithData:data encoding:enc];
文件存在几种形式:
NSData 最基本的字节流,在文件传输的过程中,首先需要decoder解码转化为一个字节流,然后传输,接收数据时需要encoder编码,必须保证编码正确才能显示出正确的数据。一般传递的数据为string,file,文件包括:二进制文件,音频,图像,文本文件等,文本文件一般是xml,json,jsp等文件,里面包含了数据。
NSString,NSDictionary 这是在程序中使用的数据,包括了不同的数据存储形式
NSFile 持久性存储的一种形式
[3] 从起动InCallScreen之后开始说起
来源: 互联网 发布时间: 2014-02-18
从启动InCallScreen之后开始说起
前提:系统为android4.0
当android系统接到一个来电的时候,会从framework启动InCallScreen界面,然后当然是停留在这个界面等待响应了。
这里有一个InCallTouchUi类,来响应了你的操作。有拒接,接听和通过sms响应。
来电后,从
InCallScreen的updateIncomingCallWidgetHint()调用
mCallCard.setIncomingCallWidgetHint(hintTextResId, hintColorResId);
mCallCard.updateState(mCM);这两个方法,前面一个是用来显示当前电话状态的文本,后面一个用来更新状态。这个时候的状态为Phone.State.RINGING,
继续调用CallCard中的updateRingingCall(cm);然后调用 displayMainCallStatus(cm, ringingCall);
displayOnHoldCallStatus(cm, null);
--->mPrimaryCallInfo.setVisibility(View.VISIBLE);---> updateCallStateWidgets(call);----updateDisplayForPerson()---->updatePhotoForCallState(),这个主叫号码的显示就完成了,
---------------------------分割线-------------------------------
然后displayOnHoldCallStatus(cm, null);用来显示被保持的电话的界面。
当你接听电话的时候,会有一个回调函数onTrigger()函数响应,此时里面的whichHandle参数为ANSWER_CALL_ID,到达onTrigger()函数之后,首先调用 hideIncomingCallWidget();来把这个界面隐藏掉。然后调用mInCallScreen.handleOnscreenButtonClick(R.id.incomingCallAnswer);来响应接听按钮。
接下来到达InCallScreen的handleOnscreenButtonClick方法,进入internalAnswerCall();然后进行网络的判断,我这个是到达PhoneUtils.answerCall(ringing)这个ringing对象如下
Call ringing = mCM.getFirstActiveRingingCall();
-----------------------分割线--------------------------------------------
最终到达InCallScreen的updateScreen()---> updateInCallTouchUi();这个用来更新下面的静音,拨号盘之类的按钮,接下来是mCallCard.updateState(mCM);
----> updateDialpadVisibility();
-----> updateProviderOverlay();
------> updateProgressIndication();
这几个方法的调用。
进入updateInCallTouchUi()后,就调用mInCallTouchUi.updateState(mCM);进入InCallTouchUi的updateState方法中。然后是调用InCallTouchUi中的updateInCallControls(cm);方法,用来显示通话状态时的ui界面。(InCallTouchUi类对应的layout是incall_touch_ui.xml),
对于R.id.holdButton和R.id.swapButton的点击处理,是在mInCallScreen.handleOnscreenButtonClick(id);中,
而对于CallCard对应的layout是call_card.xml
前提:系统为android4.0
当android系统接到一个来电的时候,会从framework启动InCallScreen界面,然后当然是停留在这个界面等待响应了。
这里有一个InCallTouchUi类,来响应了你的操作。有拒接,接听和通过sms响应。
来电后,从
InCallScreen的updateIncomingCallWidgetHint()调用
mCallCard.setIncomingCallWidgetHint(hintTextResId, hintColorResId);
mCallCard.updateState(mCM);这两个方法,前面一个是用来显示当前电话状态的文本,后面一个用来更新状态。这个时候的状态为Phone.State.RINGING,
继续调用CallCard中的updateRingingCall(cm);然后调用 displayMainCallStatus(cm, ringingCall);
displayOnHoldCallStatus(cm, null);
--->mPrimaryCallInfo.setVisibility(View.VISIBLE);---> updateCallStateWidgets(call);----updateDisplayForPerson()---->updatePhotoForCallState(),这个主叫号码的显示就完成了,
---------------------------分割线-------------------------------
然后displayOnHoldCallStatus(cm, null);用来显示被保持的电话的界面。
当你接听电话的时候,会有一个回调函数onTrigger()函数响应,此时里面的whichHandle参数为ANSWER_CALL_ID,到达onTrigger()函数之后,首先调用 hideIncomingCallWidget();来把这个界面隐藏掉。然后调用mInCallScreen.handleOnscreenButtonClick(R.id.incomingCallAnswer);来响应接听按钮。
接下来到达InCallScreen的handleOnscreenButtonClick方法,进入internalAnswerCall();然后进行网络的判断,我这个是到达PhoneUtils.answerCall(ringing)这个ringing对象如下
Call ringing = mCM.getFirstActiveRingingCall();
-----------------------分割线--------------------------------------------
最终到达InCallScreen的updateScreen()---> updateInCallTouchUi();这个用来更新下面的静音,拨号盘之类的按钮,接下来是mCallCard.updateState(mCM);
----> updateDialpadVisibility();
-----> updateProviderOverlay();
------> updateProgressIndication();
这几个方法的调用。
进入updateInCallTouchUi()后,就调用mInCallTouchUi.updateState(mCM);进入InCallTouchUi的updateState方法中。然后是调用InCallTouchUi中的updateInCallControls(cm);方法,用来显示通话状态时的ui界面。(InCallTouchUi类对应的layout是incall_touch_ui.xml),
对于R.id.holdButton和R.id.swapButton的点击处理,是在mInCallScreen.handleOnscreenButtonClick(id);中,
而对于CallCard对应的layout是call_card.xml
最新技术文章: