
正文
androidget,android个推离线不推送
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
Android getDeviceId 底层源码分析,一键新机
目前市面上的一面新机,基本都是Hook到TelephonyManager getDeviceId 方法,如何绕过?
getDeviceId 底层实现:
Android 获取Imei 接口主要由 TelephonyManager getDeviceId 来获取。
在Java层通过RILJ 和 RILD建立通讯socket,来和modem(基带芯片)建立沟通 获取返回值。
和RILD建立链接需要有Root系统权限,所以,如果获取了root权限,可以绕过系统的Api来获取IMEI,如果没有Root权限,或者是系统uid的话 基本没办法绕过getDeviceId
很多境外电商亚马逊刷单的方案已经过时,一键新机只有从底层定制才靠谱的。这个有研究的可以和我沟通交流。
主要做权限的检测
PhoneSubInfoController
相关问答
Q1: android get/post如何实现多参数请求
可使用android自带的httpclient框架实现。
GET 方式传递参数
//先将参数放入List,再对参数进行URL编码
ListBasicNameValuePair params = new LinkedListBasicNameValuePair();
params.add(new BasicNameValuePair("param1", "数据")); //增加参数1
params.add(new BasicNameValuePair("param2", "value2"));//增加参数2
String param = URLEncodedUtils.format(params, "UTF-8");//对参数编码
String baseUrl = "服务器接口完整URL";
HttpGet getMethod = new HttpGet(baseUrl + "?" + param);//将URL与参数拼接
HttpClient httpClient = new DefaultHttpClient();
try {
HttpResponse response = httpClient.execute(getMethod); //发起GET请求
Log.i(TAG, "resCode = " + response.getStatusLine().getStatusCode()); //获取响应码
Log.i(TAG, "result = " + EntityUtils.toString(response.getEntity(), "utf-8"));//获取服务器响应内容
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
2. POST方式 方式传递参数
//和GET方式一样,先将参数放入List
params = new LinkedListBasicNameValuePair();
params.add(new BasicNameValuePair("param1", "Post方法"));//增加参数1
params.add(new BasicNameValuePair("param2", "第二个参数"));//增加参数2
try {
HttpPost postMethod = new HttpPost(baseUrl);//创建一个post请求
postMethod.setEntity(new UrlEncodedFormEntity(params, "utf-8")); //将参数填入POST Entity中
HttpResponse response = httpClient.execute(postMethod); //执行POST方法
Log.i(TAG, "resCode = " + response.getStatusLine().getStatusCode()); //获取响应码
Log.i(TAG, "result = " + EntityUtils.toString(response.getEntity(), "utf-8")); //获取响应内容
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Q2: Android 中post get有什么区别
get请求方式是将提交的参数拼接在url地址后面,例如;jjj=888;但是这种形式对于那种比较隐私的参数是不适合的,而且参数的大小也是有限制的,一般是1K左右吧,对于上传文件就不是很适合。
post请求方式是将参数放在消息体内将其发送到服务器,所以对大小没有限制,对于隐私的内容也比较合适。
Q3: android post请求和get请求的区别
Get请求与Post请求的区别
Get是向服务器发索取数据的一种请求,而Post是向服务器提交数据的一种请求
Get是获取信息,而不是修改信息,类似数据库查询功能一样,数据不会被修改
Get请求的参数会跟在url后进行传递,请求的数据会附在URL之后,以?分割URL和传输数据,参数之间以相连,%XX中的XX为该符号以16进制表示的ASCII,如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64加密。
Get传输的数据有大小限制,因为GET是通过URL提交数据,那么GET可提交的数据量就跟URL的长度有直接关系了,不同的浏览器对URL的长度的限制是不同的。
GET请求的数据会被浏览器缓存起来,用户名和密码将明文出现在URL上,其他人可以查到历史浏览记录,数据不太安全。在服务器端,用Request.QueryString来获取Get方式提交来的数据
Post请求则作为http消息的实际内容发送给web服务器,数据放置在HTML Header内提交,Post没有限制提交的数据。Post比Get安全,当数据是中文或者不敏感的数据,则用get,因为使用get,参数会显示在地址,对于敏感数据和不是中文字符的数据,则用post
POST表示可能修改变服务器上的资源的请求,在服务器端,用Post方式提交的数据只能用Request.Form来获取
Q4: Android之getRunningAppProcesses介绍
全称 ActivityManager.getRunningAppProcesses();
获得当前正在运行的所有应用程序的进程。然后根据当前进程信息里的importance和processState来确定当前在顶部的进程。
不过这里得到的进程信息里只有被载入当前进程的所有包名pkgList,所以只能判断当前列表有没有你需要监控的包名。
android6.0以上的getRunningAppProcesses也失效,系统关闭了三方软件对系统进程的访问,出于安全考虑。当前只能获取自身应用的相关信息.
使用方式:
源码中的实现:
源码
Q5: 安卓GET请求,为什么会报错?
这个错误只是说不能在UI线程里面调网络,你可以启动一个
class MyTask extends AsyncTaskObject, Integer, String {
@Override
protected ListString doInBackground(Object... params) {
// 你的网络请求方法
return String;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected void onPostExecute(ListConversation result) {
super.onPostExecute(result);
}
}






