联想td30tqq软件手机push信息怎么拦截?

东北网日新闻汇总
主流媒体 龙江门户
东北网日新闻汇总
[1000][]&&
[1001][]&&
[1002][]&&
[1003][]&&
[1004][]&&
[1005][]&&
[1006][]&&
[1007][]&&
[1008][]&&
[1009][]&&
[1010][]&&
[1011][]&&
[1012][]&&
[1013][]&&
[1014][]&&
[1015][]&&
[1016][]&&
[1017][]&&
[1018][]&&
[1019][]&&
[1020][]&&
[1021][]&&
[1022][]&&
[1023][]&&
[1024][]&&
[1025][]&&
[1026][]&&
[1027][]&&
[1028][]&&
[1029][]&&
[1030][]&&
[1031][]&&
[1032][]&&
[1033][]&&
[1034][]&&
[1035][]&&
[1036][]&&
[1037][]&&
[1038][]&&
[1039][]&&
[1040][]&&
[1041][]&&
[1042][]&&
[1043][]&&
[1044][]&&
[1045][]&&
[1046][]&&
[1047][]&&
[1048][]&&
[1049][]&&
[1050][]&&
[1051][]&&
[1052][]&&
[1053][]&&
[1054][]&&
[1055][]&&
[1056][]&&
[1057][]&&
[1058][]&&
[1059][]&&
[1060][]&&
[1061][]&&
[1062][]&&
[1063][]&&
[1064][]&&
[1065][]&&
[1066][]&&
[1067][]&&
[1068][]&&
[1069][]&&
[1070][]&&
[1071][]&&
[1072][]&&
[1073][]&&
[1074][]&&
[1075][]&&
[1076][]&&
[1077][]&&
[1078][]&&
[1079][]&&
[1080][]&&
[1081][]&&
[1082][]&&
[1083][]&&
[1084][]&&
[1085][]&&
[1086][]&&
[1087][]&&
[1088][]&&
[1089][]&&
[1090][]&&
[1091][]&&
[1092][]&&
[1093][]&&
[1094][]&&
[1095][]&&
[1096][]&&
[1097][]&&
[1098][]&&
[1099][]&&
[1100][]&&
[1101][]&&
[1102][]&&
[1103][]&&
[1104][]&&
[1105][]&&
[1106][]&&
[1107][]&&
[1108][]&&
[1109][]&&
[1110][]&&
[1111][]&&
[1112][]&&
[1113][]&&
[1114][]&&
[1115][]&&
[1116][]&&
[1117][]&&
[1118][]&&
[1119][]&&
[1120][]&&
[1121][]&&
[1122][]&&
[1123][]&&
[1124][]&&
[1125][]&&
[1126][]&&
[1127][]&&
[1128][]&&
[1129][]&&
[1130][]&&
[1131][]&&
[1132][]&&
[1133][]&&
[1134][]&&
[1135][]&&
[1136][]&&
[1137][]&&
[1138][]&&
[1139][]&&
[1140][]&&
[1141][]&&
[1142][]&&
[1143][]&&
[1144][]&&
[1145][]&&
[1146][]&&
[1147][]&&
[1148][]&&
[1149][]&&
[1150][]&&
[1151][]&&
[1152][]&&
[1153][]&&
[1154][]&&
[1155][]&&
[1156][]&&
[1157][]&&
[1158][]&&
[1159][]&&
[1160][]&&
[1161][]&&
[1162][]&&
[1163][]&&
[1164][]&&
[1165][]&&
[1166][]&&
[1167][]&&
[1168][]&&
[1169][]&&
[1170][]&&
[1171][]&&
[1172][]&&
[1173][]&&
[1174][]&&
[1175][]&&
[1176][]&&
[1177][]&&
[1178][]&&
[1179][]&&
[1180][]&&
[1181][]&&
[1182][]&&
[1183][]&&
[1184][]&&
[1185][]&&
[1186][]&&
[1187][]&&
[1188][]&&
[1189][]&&
[1190][]&&
[1191][]&&
[1192][]&&
[1193][]&&
[1194][]&&
[1195][]&&
[1196][]&&
[1197][]&&
[1198][]&&
[1199][]&&
[1200][]&&
[1201][]&&
[1202][]&&
[1203][]&&
[1204][]&&
[1205][]&&
[1206][]&&
[1207][]&&
[1208][]&&
[1209][]&&
[1210][]&&
[1211][]&&
[1212][]&&
[1213][]&&
[1214][]&&
[1215][]&&
[1216][]&&
[1217][]&&
[1218][]&&
[1219][]&&
[1220][]&&
[1221][]&&
[1222][]&&
[1223][]&&
[1224][]&&
[1225][]&&
[1226][]&&
[1227][]&&
[1228][]&&
[1229][]&&
[1230][]&&
[1231][]&&
[1232][]&&
[1233][]&&
[1234][]&&
[1235][]&&
[1236][]&&
[1237][]&&
[1238][]&&
[1239][]&&
[1240][]&&
[1241][]&&
[1242][]&&
[1243][]&&
[1244][]&&
[1245][]&&
[1246][]&&
[1247][]&&
[1248][]&&
[1249][]&&
[1250][]&&
[1251][]&&
[1252][]&&
[1253][]&&
[1254][]&&
[1255][]&&
[1256][]&&
[1257][]&&
[1258][]&&
[1259][]&&
[1260][]&&
[1261][]&&
[1262][]&&
[1263][]&&
[1264][]&&
[1265][]&&
[1266][]&&
[1267][]&&
[1268][]&&
[1269][]&&
[1270][]&&
[1271][]&&
[1272][]&&
[1273][]&&
[1274][]&&
[1275][]&&
[1276][]&&
[1277][]&&
[1278][]&&
[1279][]&&
[1280][]&&
[1281][]&&
[1282][]&&
[1283][]&&
[1284][]&&
[1285][]&&
[1286][]&&
[1287][]&&
[1288][]&&
[1289][]&&
[1290][]&&
[1291][]&&
[1292][]&&
[1293][]&&
[1294][]&&
[1295][]&&
[1296][]&&
[1297][]&&
[1298][]&&
[1299][]&&
[1300][]&&
[1301][]&&
[1302][]&&
[1303][]&&
[1304][]&&
[1305][]&&
[1306][]&&
[1307][]&&
[1308][]&&
[1309][]&&
[1310][]&&
[1311][]&&
[1312][]&&
[1313][]&&
[1314][]&&
[1315][]&&
[1316][]&&
[1317][]&&
[1318][]&&
[1319][]&&
[1320][]&&
[1321][]&&
[1322][]&&
[1323][]&&
[1324][]&&
[1325][]&&
[1326][]&&
[1327][]&&
[1328][]&&
[1329][]&&
[1330][]&&
[1331][]&&
[1332][]&&
[1333][]&&
[1334][]&&
[1335][]&&
[1336][]&&
[1337][]&&
[1338][]&&
[1339][]&&
[1340][]&&
[1341][]&&
[1342][]&&
[1343][]&&
[1344][]&&
[1345][]&&
[1346][]&&
[1347][]&&
[1348][]&&
[1349][]&&
[1350][]&&
[1351][]&&
[1352][]&&
[1353][]&&
[1354][]&&
[1355][]&&
[1356][]&&
[1357][]&&
[1358][]&&
[1359][]&&
[1360][]&&
[1361][]&&
[1362][]&&
[1363][]&&
[1364][]&&
[1365][]&&
[1366][]&&
[1367][]&&
[1368][]&&
[1369][]&&
[1370][]&&
[1371][]&&
[1372][]&&
[1373][]&&
[1374][]&&
[1375][]&&
[1376][]&&
[1377][]&&
[1378][]&&
[1379][]&&
[1380][]&&
[1381][]&&
[1382][]&&
[1383][]&&
[1384][]&&
[1385][]&&
[1386][]&&
[1387][]&&
[1388][]&&
[1389][]&&
[1390][]&&
[1391][]&&
[1392][]&&
[1393][]&&
[1394][]&&
[1395][]&&
[1396][]&&
[1397][]&&
[1398][]&&
[1399][]&&
[1400][]&&
[1401][]&&
[1402][]&&
[1403][]&&
[1404][]&&
[1405][]&&
[1406][]&&
[1407][]&&
[1408][]&&
[1409][]&&
[1410][]&&
[1411][]&&
[1412][]&&
[1413][]&&
[1414][]&&
[1415][]&&
[1416][]&&
[1417][]&&
[1418][]&&
[1419][]&&
[1420][]&&
[1421][]&&
[1422][]&&
[1423][]&&
[1424][]&&
[1425][]&&
[1426][]&&
[1427][]&&
[1428][]&&
[1429][]&&
[1430][]&&
[1431][]&&
[1432][]&&
[1433][]&&
[1434][]&&
[1435][]&&
[1436][]&&
[1437][]&&
[1438][]&&
[1439][]&&
[1440][]&&
[1441][]&&
[1442][]&&
[1443][]&&
[1444][]&&
[1445][]&&
[1446][]&&
[1447][]&&
[1448][]&&
[1449][]&&
[1450][]&&
[1451][]&&
[1452][]&&
[1453][]&&
[1454][]&&
[1455][]&&
[1456][]&&
[1457][]&&
[1458][]&&
[1459][]&&
[1460][]&&
[1461][]&&
[1462][]&&
[1463][]&&
[1464][]&&
[1465][]&&
[1466][]&&
[1467][]&&
[1468][]&&
[1469][]&&
[1470][]&&
[1471][]&&
[1472][]&&
[1473][]&&
[1474][]&&
[1475][]&&
[1476][]&&
[1477][]&&
[1478][]&&
[1479][]&&
[1480][]&&
[1481][]&&
[1482][]&&
[1483][]&&
[1484][]&&
[1485][]&&
[1486][]&&
[1487][]&&
[1488][]&&
[1489][]&&
[1490][]&&
[1491][]&&
[1492][]&&
[1493][]&&
[1494][]&&
[1495][]&&
[1496][]&&
[1497][]&&
[1498][]&&
[1499][]&&
[1500][]&&
[1501][]&&
[1502][]&&
[1503][]&&
[1504][]&&
[1505][]&&
[1506][]&&
[1507][]&&
[1508][]&&
[1509][]&&
[1510][]&&
[1511][]&&
[1512][]&&
[1513][]&&
[1514][]&&
[1515][]&&
[1516][]&&
[1517][]&&
[1518][]&&
[1519][]&&
[1520][]&&
[1521][]&&
[1522][]&&
[1523][]&&
[1524][]&&
[1525][]&&
[1526][]&&
[1527][]&&
[1528][]&&
[1529][]&&
[1530][]&&
[1531][]&&
[1532][]&&
[1533][]&&
[1534][]&&
[1535][]&&
[1536][]&&
[1537][]&&
[1538][]&&
[1539][]&&
[1540][]&&
[1541][]&&
[1542][]&&
[1543][]&&
[1544][]&&
[1545][]&&
[1546][]&&
[1547][]&&
[1548][]&&
[1549][]&&
[1550][]&&
[1551][]&&
[1552][]&&
[1553][]&&
[1554][]&&
[1555][]&&
[1556][]&&
[1557][]&&
[1558][]&&
[1559][]&&
[1560][]&&
[1561][]&&
[1562][]&&
[1563][]&&
[1564][]&&
[1565][]&&
[1566][]&&
[1567][]&&
[1568][]&&
[1569][]&&
[1570][]&&
[1571][]&&
[1572][]&&
[1573][]&&
[1574][]&&
[1575][]&&
[1576][]&&
[1577][]&&
[1578][]&&
[1579][]&&
[1580][]&&
[1581][]&&
[1582][]&&
[1583][]&&
[1584][]&&
[1585][]&&
[1586][]&&
[1587][]&&
[1588][]&&
[1589][]&&
[1590][]&&
[1591][]&&
[1592][]&&
[1593][]&&
[1594][]&&
[1595][]&&
[1596][]&&
[1597][]&&
[1598][]&&
[1599][]&&
[1600][]&&
[1601][]&&
[1602][]&&
[1603][]&&
[1604][]&&
[1605][]&&
[1606][]&&
[1607][]&&
[1608][]&&
[1609][]&&
[1610][]&&
[1611][]&&
[1612][]&&
[1613][]&&
[1614][]&&
[1615][]&&
[1616][]&&
[1617][]&&
[1618][]&&
[1619][]&&
[1620][]&&
[1621][]&&
[1622][]&&
[1623][]&&
[1624][]&&
[1625][]&&
[1626][]&&
[1627][]&&
[1628][]&&
[1629][]&&
[1630][]&&
[1631][]&&
[1632][]&&
[1633][]&&
[1634][]&&
[1635][]&&
[1636][]&&
[1637][]&&
[1638][]&&
[1639][]&&
[1640][]&&
[1641][]&&
[1642][]&&
[1643][]&&
[1644][]&&
[1645][]&&
[1646][]&&
[1647][]&&
[1648][]&&
[1649][]&&
[1650][]&&
[1651][]&&
[1652][]&&
[1653][]&&
[1654][]&&
[1655][]&&
[1656][]&&
[1657][]&&
[1658][]&&
[1659][]&&
[1660][]&&
[1661][]&&
[1662][]&&
[1663][]&&
[1664][]&&
[1665][]&&
[1666][]&&
[1667][]&&
[1668][]&&
[1669][]&&
[1670][]&&
[1671][]&&
[1672][]&&
[1673][]&&
[1674][]&&
[1675][]&&
[1676][]&&
[1677][]&&
[1678][]&&
[1679][]&&
[1680][]&&
[1681][]&&
[1682][]&&
[1683][]&&
[1684][]&&
[1685][]&&
[1686][]&&
[1687][]&&
[1688][]&&
[1689][]&&
[1690][]&&
[1691][]&&
[1692][]&&
[1693][]&&
[1694][]&&
[1695][]&&
[1696][]&&
[1697][]&&
[1698][]&&
[1699][]&&
[1700][]&&
[1701][]&&
[1702][]&&
[1703][]&&
[1704][]&&
[1705][]&&
[1706][]&&
[1707][]&&
[1708][]&&
[1709][]&&
[1710][]&&
[1711][]&&
[1712][]&&
[1713][]&&
[1714][]&&
[1715][]&&
[1716][]&&
[1717][]&&
[1718][]&&
[1719][]&&
[1720][]&&
[1721][]&&
[1722][]&&
[1723][]&&
[1724][]&&
[1725][]&&
[1726][]&&
[1727][]&&
[1728][]&&
[1729][]&&
[1730][]&&
[1731][]&&
[1732][]&&
[1733][]&&
[1734][]&&
[1735][]&&
[1736][]&&
[1737][]&&
[1738][]&&
[1739][]&&
[1740][]&&
[1741][]&&
[1742][]&&
[1743][]&&
[1744][]&&
[1745][]&&
[1746][]&&
[1747][]&&
[1748][]&&
[1749][]&&
[1750][]&&
[1751][]&&
[1752][]&&
[1753][]&&
[1754][]&&
[1755][]&&
[1756][]&&
[1757][]&&
[1758][]&&
[1759][]&&
[1760][]&&
[1761][]&&
[1762][]&&
[1763][]&&
[1764][]&&
[1765][]&&
[1766][]&&
[1767][]&&
[1768][]&&
[1769][]&&
[1770][]&&
[1771][]&&
[1772][]&&
[1773][]&&
[1774][]&&
[1775][]&&
[1776][]&&
[1777][]&&
[1778][]&&
[1779][]&&
[1780][]&&
[1781][]&&
[1782][]&&
[1783][]&&
[1784][]&&
[1785][]&&
[1786][]&&
[1787][]&&
[1788][]&&
[1789][]&&
[1790][]&&
[1791][]&&
[1792][]&&
[1793][]&&
[1794][]&&
[1795][]&&
[1796][]&&
[1797][]&&
[1798][]&&
[1799][]&&
[1800][]&&
[1801][]&&
[1802][]&&
[1803][]&&
[1804][]&&
[1805][]&&
[1806][]&&
[1807][]&&
[1808][]&&
[1809][]&&
[1810][]&&
[1811][]&&
[1812][]&&
[1813][]&&
[1814][]&&
[1815][]&&
[1816][]&&
[1817][]&&
[1818][]&&
[1819][]&&
[1820][]&&
[1821][]&&
[1822][]&&
[1823][]&&
[1824][]&&
[1825][]&&
[1826][]&&
[1827][]&&
[1828][]&&
[1829][]&&
[1830][]&&
[1831][]&&
[1832][]&&
[1833][]&&
[1834][]&&
[1835][]&&
[1836][]&&
[1837][]&&
[1838][]&&
[1839][]&&
[1840][]&&
[1841][]&&
[1842][]&&
[1843][]&&
[1844][]&&
[1845][]&&
[1846][]&&
[1847][]&&
[1848][]&&
[1849][]&&
[1850][]&&
[1851][]&&
[1852][]&&
[1853][]&&
[1854][]&&
[1855][]&&
[1856][]&&
[1857][]&&
[1858][]&&
[1859][]&&
[1860][]&&
[1861][]&&
[1862][]&&
[1863][]&&
[1864][]&&
[1865][]&&
[1866][]&&
[1867][]&&
[1868][]&&
[1869][]&&
[1870][]&&
[1871][]&&
[1872][]&&
[1873][]&&
[1874][]&&
[1875][]&&
[1876][]&&
[1877][]&&
[1878][]&&
[1879][]&&
[1880][]&&
[1881][]&&
[1882][]&&
[1883][]&&
[1884][]&&
[1885][]&&
[1886][]&&
[1887][]&&
[1888][]&&
[1889][]&&
[1890][]&&
[1891][]&&
[1892][]&&
[1893][]&&
[1894][]&&
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
Copyright & 2001- All Rights Reserved.
本网站为东北网版权所有,未经协议授权,禁止下载使用。Android中如何在QQ通讯录,360之前拦截短信
Android中如何在QQ通讯录,360之前拦截短信
一般是这样实现的:注册一个接受短信Intent-Filter,获取短信广播,分析短信内容然后相应处理。对特定短信终止广播继续(abort方法),阻止其进入收件箱。大致就是这么一个过程。
但上述方式,在QQ通讯录/360/飞信存在的情况下,拦截短信失败~也就是说它们抢先拿到了收短信的广播,并将其中断了。那么如何解决这个问题呢~
本来以为腾讯是拦截ril层的消息,然后阻止广播继续,但是这种方式要修改framework才能实现。
后来发现存在广播接收器(Receiver)的Intent-Filter的优先级(priority),SDK里说Prioruty的范围是-,若设为一千以上好像跟1000的效果一样。然后我在A应用中的Manifest里将Receiver的Intent-Filter优先级设为1000,但测试结果还是被QQ通讯录抢先。
进一步Google后,得到下面的结论:
反编译QQ通讯录/360手机卫士,发现些许奥秘。貌似这个涉及到Broadcast的分发机制,参考底层代码应该比较好解释~
广播分为2中,无序和有序。可以理解为散列和队列。
首先无序广播,不能中断,所有注册相应Intent-Filter的Reciver都可以接收到~
其次是有序广播,可以中断。它的消息是按优先级传送的,任何一个Receiver在接收后,可以使用abort将其停止,这样就导致了后续的Receiver不能收到广播。
下面是一个猜想,做了些测试,也基本符合~
假设广播接收器的优先级都设为最大整型,首先动态注册优先级最高,其次是静态注册。在动态注册中,最早注册的优先级最高。在静态注册中,最早安装的程序,优先级最高(注:安装apk会解析af.xml,把其加入队列)
在反编译360后,发现其静态注册的广播接收器里设置的优先级数值为,然后再广播中启动一个service,在service中注册一个优先级为的同样地广播接收器。也就是说,假设现在进程全杀,那么短信来了,360和QQ通讯录,谁先安装,谁的静态注册广播接收器就会先启动,然后把广播中断,而且它还启动了一个service又动态注册一个Receiver。这样,它的优先级就排在了所有静态接收器之前了。
所以,我们做个试验,以同样的方式:
首先写一个应用,注册一个开机完成的Receiver
& /receiver&
然后再这个Receiver接收到开机广播后,立即启动一个service
public void
onReceive(Context context, Intent intent) {
&&&&&&&&&&&&&&&
Log.v("MyBrocast.onReceive", "testtttttttttttt");
&&&&&&&&&&&&&&&
if(intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)){
&&&&&&&&&&&&&&&&&&&&&&&
Intent service=new Intent(context, MyService.class);
&&&&&&&&&&&&&&&&&&&&&&&
context.startService(service);
&&&&&&&&&&&&&&&
然后在service中重新动态注册一个Receiver,优先级为
IntentFilter
localIntentFilter = new
IntentFilter("android.provider.Telephony.SMS_RECEIVED");
localIntentFilter.setPriority();
MyBrocast localMessageReceiver =new MyBrocast();
Log.v("MyBrocast.onReceive", "onCreate");
Intent localIntent = registerReceiver(localMessageReceiver,
localIntentFilter);
重启手机就OK了,抢先360、QQ拦截短信~因为360/QQ并没有在接受开机广播后,动态注册短信广播的接收器。这样重启后A应用就可以在它们之前拦截到短信了~
但上述抢先方式,付出的代价是,A应用需要一直有这么一个service后台运行。一旦被杀,优先权又回被360/QQ抢占,只有等到下次重启。除非A应用在QQ/360之前安装到手机上~
总结一下:
代码动态注册的Intent-Filter高于manifest静态注册的Intent-Filter。动态注册中的Intent-Filter在相同优先级下(如整型的最大值),接受顺序是按照动态注册的时间顺序。静态注册中Intent-Filter在相同优先级下,接受顺序是apk的安装顺序。
最近在网上搜索怎样绕开QQ通讯录和360的广播中断,在它们之前拿到短信,结果很遗憾没有搜索到什么东西,反而搜索到一些炫耀的帖子,只说自己解决了,不给别个分享解决方案的。
我只好自己来弄一下这个东东。
本来以为腾讯是拦截ril层的消息,然后阻断广播的发送,但是这种方式要修改framework才可能实现。
反编译QQ通讯录代码,没有看到特殊的设置,反编译360,发现了其中的奥秘。
这要从广播特别是有序广播的分发机制说起,底层的代码还有待我们的研究。
我没怎么看底层代码,只有测试实践。
经过我多次测试发现:
广播分2种,无序广播和有序广播。可以理解为散列和队列广播。
首先无序广播,不能中断,分发机制有点类似散列发送。这种广播的的发送为:context.sendBroadcast
这种广播是不能中断的,请看API说明。
其次为有序广播,可以中断。
这种广播,以我的理解可能存在很大的BUG,短信这块广播的发送BUG现在被QQ和360利用,可能在以后的版本中会修订。
它是一个按一种优先级顺序发送,即按某种messagequere队列发送,其中队列中的任何广播接收者都可以终端该广播,导致它之后的成员不能接收到广播。
我们首先看这个队列是怎么形成的:(以下是假想+测试验证,有待代码验证)
假设我们广播优先级别都设成:(注:最大int形整数)
首先动态注册优先级别最高
其次静态注册
在动态注册中
最早动态注册优先级别最高
在静态注册中
最早安装的程序,静态注册优先级别最高(注:安装APK会解析af.xml,把其加入队列)
注意这里安装 是指adb install
xxx.apk或者手机上安装应用。
然后才是adb push到其他目录的应用
可能的原因是手机查询应用的时候会先去特定目录解析应用,所以广播注册会出现这种差别。adb push
到system/app下会比安装的优先级高吗?这有待你的验证,我还没验证。
然后都是安装的应用中
首先安装的优先等级最高
以上就是我分析的有序广播的优先级别问题。
反编译360源码会发现,他首先静态注册的广播接收器里面设置的优先数量级为,然后在广播中启动一个service,在service中注册了一个优先数量级为的同样的广播接收器。
就这么简单就实现了没有同种实现的应用的情况下拦截短信。
OK,我们现在以同样的方式来做一个实验:
首先写一个应用,注册一个开机完成广播接收者。
android:name=".MyBrocast"
android:permission="android.permission.BROADCAST_SMS"&
&&&&&&&&&&&&
&intent-filter
android:priority=""&
&&&&&&&&&&&&&&&&
android:name="android.provider.Telephony.SMS_RECEIVED"
&&&&&&&&&&&&
&/intent-filter&
&&&&&&&&&&&&
&intent-filter
android:priority=""&
&&&&&&&&&&&&&&&&
android:name="android.intent.action.BOOT_COMPLETED"
&&&&&&&&&&&&
&/intent-filter&
&/receiver&
然后在这个广播接收者接收到信息之后马上启动一个service
public void onReceive(Context
context, Intent intent) {
&&&&&&&&&&&&&&&&
Log.v("MyBrocast.onReceive", "testtttttttttttt");
&&&&&&&&&&&&&&&&
if(intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)){
&&&&&&&&&&&&&&&&&&&&&&&&
Intent service=new Intent(context,
MyService.class);
&&&&&&&&&&&&&&&&&&&&&&&&
context.startService(service);
&&&&&&&&&&&&&&&&
然后在service重新注册一个接收短信的广播接收者,优先级
IntentFilter localIntentFilter = new
IntentFilter("android.provider.Telephony.SMS_RECEIVED");
&&&&&&&&&&&&
localIntentFilter.setPriority();
&&&&&&&&&&&&
myService = new MyBrocast();
&&&&&&&&&&&&
MyBrocast localMessageReceiver = myS
&&&&&&&&&&&&
Log.v("MyBrocast.onReceive", "onCreate");
&&&&&&&&&&&&
Intent localIntent = registerReceiver(localMessageReceiver,
localIntentFilter);
这种重启手机就OK了,你也可以让360,QQ郁闷的。
当然这里分享这个信息主要是想和大家一起提高,360和QQ的android版还是做的相当好的,有许多我们借鉴的地方。
其实我们也可以认为这是telephone模块的一个BUG,据说以前的版本是无序广播,不知是否出于拦截短信的机制修改了,反正我觉得有被第3方应用滥用的可能。
测试源码很简单,这里就不贴了
这里测试代码有很多不完善,比如服务被杀或者没有启动什么的。我们可以考虑把服务进程挂载到重要进程上去。
&-----------------------------------------------更新分割线-----------------------------------------------------&
前面理解可能有点偏差,下面是我研究了一下代码部分验证了我的推论,能力有限还没能完全验证。
这个方法说明,如果我们的优先级设置为最大int形整数是能够排在最前面的。
到这里我们发现,优先级设置最高的会排在前面,如果优先级相同则按默认的排序不动,那么现在默认的排序是怎么样的呢?
我们发现大部分广播发送者都是只传送一个action,所以我们关注:
if (resolvedType == null
&& scheme == null
&& intent.getAction() != null)
&&&&&&&&&&&&
firstTypeCut =
mActionToFilter.get(intent.getAction());
&&&&&&&&&&&&
if (debug) Slog.v(TAG, "Action list: " +
firstTypeCut);
mActionToFilter内部list的排序决定了同样优先级情况下的排序问题
首先我们跟踪比较容易跟踪的
1.动态注册
AMS中的registerReceiver方法中有对变量mReceiverResolver的操作
BroadcastFilter bf = new
BroadcastFilter(filter, rl, permission);
&&&&&&&&&&&&
rl.add(bf);
&&&&&&&&&&&&
if (!bf.debugCheck()) {
&&&&&&&&&&&&&&&&
Slog.w(TAG, "==& For Dynamic
broadast");
&&&&&&&&&&&&
&&&&&&&&&&&&
mReceiverResolver.addFilter(bf);
这里验证了同样优先级的情况下先动态注册的排在后来动态注册的广播接收者的前面。------------------1OK
2.静态注册
我们首先跟踪到PackageManagerService中的queryIntentReceivers方法
ComponentName comp =
intent.getComponent();一般为空,略过。
因为广播一般不会发送给某个指定的包,所以最终一般会调用
if (pkgName == null)
&&&&&&&&&&&&&&&&
(List&ResolveInfo&)mReceivers.queryIntent(intent,
&&&&&&&&&&&&&&&&&&&&&&&&
resolvedType, flags);
&&&&&&&&&&&&
这里会调用到IntentResolver的public
List&R& queryIntent(Intent intent,
String resolvedType, boolean defaultOnly) 方法
这里同样是找mActionToFilter中的值,说明这个对象里面可以动态赋值给它(动态注册AMS中的registerReceiver方法中有对变量mReceiverResolver)
也可以静态赋值,那么我们现在关注的就是mf.xml中的赋值顺序。但是到这里跟踪不下去了,感觉是安装的时候packageManageservice做了某种特殊的设置,adb
install和adb push也做了不同的操作,
我还没有研究PMS,希望高手能解释下
-------------2 not
继续回来看AMS的broadcastIntentLocked方法
if (!ordered
&& NR & 0)
如果不是队列广播这里会先立即给动态注册的广播接收者发送消息
------------------------------------3OK一部分
并且这里还说明了一个问题:就是非ordered的广播基本都是动态注册优先接收到信息,无论动态注册的优先级多低(有的情况也不是这样的,具体见源代码)
if (receivers != null)
这里只要有静态注册的一般不为空
int NT = receivers != null ?
receivers.size() : 0;
&&&&&&&&&&&&
int it = 0;
&&&&&&&&&&&&
ResolveInfo curt =
&&&&&&&&&&&&
BroadcastFilter curr =
&&&&&&&&&&&&
while (it & NT && ir
&&&&&&&&&&&&&&&&
if (curt == null) {
&&&&&&&&&&&&&&&&&&&&
curt = (ResolveInfo)receivers.get(it);
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&
if (curr == null) {
&&&&&&&&&&&&&&&&&&&&
curr = registeredReceivers.get(ir);
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&
if (curr.getPriority() &= curt.priority)
&&&&&&&&&&&&&&&&&&&&
// Insert this broadcast record into the final
&&&&&&&&&&&&&&&&&&&&
receivers.add(it, curr);
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&
// Skip to the next ResolveInfo in the final list.
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&
这一段仅仅是把动态注册的优先级一样的广播加在了静态注册的前面,这里完全验证了动态注册优先静态注册----------------------3OK
代码后面的就是发送广播了。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。}

我要回帖

更多关于 联想td30tqq软件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信