作者mouse21 (小鼠)
看板Soft_Job
标题[请益] android透过反射去呼叫LocationManager的
时间Thu Aug 11 03:20:10 2016
看到 LocationManager
大家可能都可以猜到我想干嘛
Fack GPS之类的APP都是透过 Mock Location去达到改变位置的效果
我就想从LocationManager 去着手,想从GPS晶片上来的路中做修改。
目前研究到 LocationManager有绑定到一个名为 LocationManagerService的物件
中间的介面为 ILocationManager
在LocationManager里有一个mService物件 形态为ILocationManaer
从别人的分析中找到 这个Interface中有一个很重要的Method是
reportLocation 对应於 gps_location_callback
也就是从他开始把GPS位置往上传递到各个 LocationListener
几个关键方法
ListenerTransport transport = wrapListener(listener, looper);
//其中的一个function
@Override
public void onLocationChanged(Location location) {
Message msg = Message.obtain();
msg.what = TYPE_LOCATION_CHANGED;
msg.obj = location;
mListenerHandler.sendMessage(msg);
}
mService.requestLocationUpdates(request, transport(上面的物件), intent, packageName);
mService中
public void reportLocation(Location location ,boolean){
//略过部分
if(mContext.checkCallingOrSelfPermission(
INSTALL_LOCATION_PROVIDER
)!=PcakagerManager.PERMISSION_GRANTER){
throw new SecurityException("Requires INSTALL_LOCATION_
PROVIDER permission")
}
Message m = Message.obtain(mLocationHandler,MESSAGE_LOCATION_CHANGED,location);
}
由此得知,透过reportLocation 可以将坐标传往所有注册的locationlistener
不过当我找到 reportLocation 并且呼叫他之後
出现了
Requires INSTALL_LOCATION_PROVIDER permission
也就是上面那个IF的内容QQ
那我现在是改成找到Handler ...
并且Message m = Message.obtain(mLocationHandler,MESSAGE_LOCATION_CHANGED,location);
成功的机会比较大吗QQ
(苦恼
避免误会
我的权限内有加上
<uses-permission
android:name="android.permission.INSTALL_LOCATION_PROVIDER"></uses-permission>
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.132.33.232
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1470856813.A.F88.html
※ 编辑: mouse21 (220.132.33.232), 08/11/2016 03:29:24
1F:→ galic: 怎不发在Android开发版 08/11 09:18
2F:→ hicoy: 有root吗?或者是system app吗? 08/11 10:23
3F:→ ssccg: 有些权限你必须是系统app才有用,自己加了也没用 08/11 11:58
4F:→ y3k: 你有要权限 不代表别人会给你 08/11 12:25
5F:→ willyp: 可以查系统定义这permission的权限 我看好像是 08/11 23:19
6F:→ willyp: signature|privileged 你自己写的ap应该无法跟他sign同样 08/11 23:20
7F:→ willyp: 的key // Not for use by third-party applications 08/11 23:20
8F:推 jiahansu: location service是透过ipc跟其他的app互动的,跟搂主 08/12 19:01
9F:→ jiahansu: 的app不是在同一个process,这样做根本没用。 08/12 19:01
10F:推 kimmyariel: 要直接改android framework才有用吧? 08/14 15:06