Fixed
Status Update
Comments
qi...@gmail.com <qi...@gmail.com> #2
Just to make sure I understand the request, you want LatLng coordinates translated to
absolute pixel coordinates? Is that correct?
absolute pixel coordinates? Is that correct?
ma...@gmail.com <ma...@gmail.com> #3
Filing the feature request, but please confirm my question above.
jo...@gmail.com <jo...@gmail.com> #4
Yes, absolute pixel coordinates.
zh...@gmail.com <zh...@gmail.com> #5
Sorry, I just woke up, i meant to say. Yes, absolute pixel coordinates. Thanks for
the response :)
the response :)
a2...@gmail.com <a2...@gmail.com> #6
Got it, thanks!
[Deleted User] <[Deleted User]> #7
Can you describe one (or a few) practical use cases where you'd need this instead of
using the one provided by the OverlayView class?
using the one provided by the OverlayView class?
lt...@gmail.com <lt...@gmail.com> #8
Unfortunately, I can't speak for the "fromLatLngToPixel" crowd, but I can say that
I/we use (and would like in v3) "fromContainerPixelToLatLng". We use it specifically
to get a wider bounds for populating map markers.
In more detail:
When a user views a map, we create a buffer -- let's say 200 extra pixels on all
sides, and use the corresponding lat/lng bounds to get a set of data points within
the map through AJAX. This way when a user moves the map just a little within the 200
pixel buffer we don't have to do another AJAX request. It's essentially just a box
outside of the box. Without "fromContainerPixelToLatLng" we can't get accurate
lat/lng for the buffer box.
Correct me if I'm wrong, but wouldn't creating an Overlay (at least as described in
your examples) just be unnecessary overhead?
I/we use (and would like in v3) "fromContainerPixelToLatLng". We use it specifically
to get a wider bounds for populating map markers.
In more detail:
When a user views a map, we create a buffer -- let's say 200 extra pixels on all
sides, and use the corresponding lat/lng bounds to get a set of data points within
the map through AJAX. This way when a user moves the map just a little within the 200
pixel buffer we don't have to do another AJAX request. It's essentially just a box
outside of the box. Without "fromContainerPixelToLatLng" we can't get accurate
lat/lng for the buffer box.
Correct me if I'm wrong, but wouldn't creating an Overlay (at least as described in
your examples) just be unnecessary overhead?
ag...@gmail.com <ag...@gmail.com> #9
Tariqseif, you can do this currently by subclassing an OverlayView to display a fixed
viewport over a map. Granted this isn't the intended use case for an OverlayView (is
more of a custom control), it's certainly doable.
Check out the example I hacked up:
http://savedbythegoog.appspot.com/?id=ag5zYXZlZGJ5dGhlZ29vZ3ISCxIJU2F2ZWRDb2RlGL318AEM
viewport over a map. Granted this isn't the intended use case for an OverlayView (is
more of a custom control), it's certainly doable.
Check out the example I hacked up:
li...@gmail.com <li...@gmail.com> #10
The listed tricks are definitely malicious. Could you please fix this issue?
xu...@gmail.com <xu...@gmail.com> #11
Updated the title to reflect the equivalent v2 method missing from v3 which would
resolve this.
resolve this.
hr...@gmail.com <hr...@gmail.com> #12
Cross-posted with 1794: this request (1523) is different from 1794 feature request.
1523 is about converting absolute screen pixel coordinate into LatLng coordinates,
while 1794 is about getting map offset data from API to get absolute pixel
coordinates. While I may want to have LatLng in some cases, in other cases I do not
(for example, if I operate with tiles). Although it's possible to convert LatLng back
to pixels I'd like to avoid this unnecessary step.
1523 is about converting absolute screen pixel coordinate into LatLng coordinates,
while 1794 is about getting map offset data from API to get absolute pixel
coordinates. While I may want to have LatLng in some cases, in other cases I do not
(for example, if I operate with tiles). Although it's possible to convert LatLng back
to pixels I'd like to avoid this unnecessary step.
oa...@gmail.com <oa...@gmail.com> #13
Also, a suggestion for google folks: when you merge issues I think it makes sense to
combine their ratings (as long as they are from different users).
combine their ratings (as long as they are from different users).
jd...@gmail.com <jd...@gmail.com> #14
What you're describing are different use cases of the same feature, which is the
ability to convert pixel coordinates relative to the developer provided map canvas
container to lat/lng coordinates on the map and vice versa. With this capability
added, you can then calculate absolute pixel coordinates, etc.
I understand the request. However, I'm still not understanding what it is you're
specifically trying to do and why. For instance, if your intent is to position an
HTML container of some kind relative to the map canvas container you provided, for
what scenario would you ever need to translate these coordinates to lat/lng on the
map? Are you seeking to place a fixed position HTML container over the map which
doesn't move as the map is dragged? Even in this case, why do you need to calculate
the lat/lng coordinates underneath it?
It's important to note the v3 API doesn't yet support custom tile overlays nor does
it support custom map controls. These should not be part of your justification to
add this feature and are instead completely separate feature requests. In other
words, I'm trying to isolate what it is you really want from the API. This request
sounds more like a workaround to add a feature not currently supported by the API,
e.g. custom controls/tiles.
Please followup with any comments on this issue.
ability to convert pixel coordinates relative to the developer provided map canvas
container to lat/lng coordinates on the map and vice versa. With this capability
added, you can then calculate absolute pixel coordinates, etc.
I understand the request. However, I'm still not understanding what it is you're
specifically trying to do and why. For instance, if your intent is to position an
HTML container of some kind relative to the map canvas container you provided, for
what scenario would you ever need to translate these coordinates to lat/lng on the
map? Are you seeking to place a fixed position HTML container over the map which
doesn't move as the map is dragged? Even in this case, why do you need to calculate
the lat/lng coordinates underneath it?
It's important to note the v3 API doesn't yet support custom tile overlays nor does
it support custom map controls. These should not be part of your justification to
add this feature and are instead completely separate feature requests. In other
words, I'm trying to isolate what it is you really want from the API. This request
sounds more like a workaround to add a feature not currently supported by the API,
e.g. custom controls/tiles.
Please followup with any comments on this issue.
co...@gmail.com <co...@gmail.com> #15
d... the "hacked up example" you gave will hopefully help serve my purposes, but I will
take a look at it today and report back. I can say, however, that my portion of this
feature request has nothing to do with custom controls/tiler and everything to do with
marker management. Thanks!
take a look at it today and report back. I can say, however, that my portion of this
feature request has nothing to do with custom controls/tiler and everything to do with
marker management. Thanks!
hy...@gmail.com <hy...@gmail.com> #16
I have a similar problem:
How can I get bounds coordinates (four LatLng corners) by center's LatLng point,
width and height in pixels and zoom level?
I must calculate them on a server side - no javascript can be used.
"fromContainerPixelToLatLng" math formulas will be the best way.
How can I get bounds coordinates (four LatLng corners) by center's LatLng point,
width and height in pixels and zoom level?
I must calculate them on a server side - no javascript can be used.
"fromContainerPixelToLatLng" math formulas will be the best way.
hi...@lincolnguang.top <hi...@lincolnguang.top> #17
hi...@gmail.com <hi...@gmail.com> #18
ye...@gmail.com <ye...@gmail.com> #19
Support!!
cl...@gmail.com <cl...@gmail.com> #20
Support
da...@gmail.com <da...@gmail.com> #21
Good Job & Support
ma...@gmail.com <ma...@gmail.com> #22
Support!
ye...@gmail.com <ye...@gmail.com> #23
Tencent, xiaomi and other Chinese companies develop the push mechanism that different from the FCM could unlimit by the Android 0, app background services depends on those push could live thus the limitation of system. Plz fix this issue.
zh...@gmail.com <zh...@gmail.com> #24
Yes, my phone was disturbed by this issue, so hope the official release to stop them.
ch...@gmail.com <ch...@gmail.com> #25
Plz fix this issue.My phone was disturbed by this issue also.
ch...@gmail.com <ch...@gmail.com> #26
Hope google can fix it,this just broken the android ecosystem.
16...@gmail.com <16...@gmail.com> #27
Support!
yu...@gmail.com <yu...@gmail.com> #28
Support
xi...@gmail.com <xi...@gmail.com> #29
Prevent hooliganism
bb...@gmail.com <bb...@gmail.com> #30
Support
vi...@gmail.com <vi...@gmail.com> #31
Support
yo...@gmail.com <yo...@gmail.com> #32
good job
w7...@gmail.com <w7...@gmail.com> #33
Support.
ho...@gmail.com <ho...@gmail.com> #34
Support
yo...@gmail.com <yo...@gmail.com> #35
Support
xp...@gmail.com <xp...@gmail.com> #36
Hope Google can fix it early, my phone has been troubled for a long time
lu...@gmail.com <lu...@gmail.com> #37
Hope Google can fix it early.
bo...@gmail.com <bo...@gmail.com> #38
Make the future better✊
su...@gmail.com <su...@gmail.com> #39
Supprot
wh...@gmail.com <wh...@gmail.com> #40
support
se...@gmail.com <se...@gmail.com> #41
support
ch...@gmail.com <ch...@gmail.com> #42
support!
iw...@gmail.com <iw...@gmail.com> #43
support!
zh...@gmail.com <zh...@gmail.com> #44
The system should limit the apps from running in favor of the user's choice. So system should limit the inactive apps' background service so that it won't downgrade the experience.
bi...@gmail.com <bi...@gmail.com> #45
Support
cz...@gmail.com <cz...@gmail.com> #46
support
63...@gmail.com <63...@gmail.com> #47
support
mo...@gmail.com <mo...@gmail.com> #48
support
ll...@gmail.com <ll...@gmail.com> #49
support
ea...@gmail.com <ea...@gmail.com> #50
support, it can be quite useful
jh...@gmail.com <jh...@gmail.com> #51
support you.
hu...@gmail.com <hu...@gmail.com> #52
support
an...@gmail.com <an...@gmail.com> #53
support
xi...@gmail.com <xi...@gmail.com> #54
Plunk for writer!
ws...@gmail.com <ws...@gmail.com> #55
Support
fr...@gmail.com <fr...@gmail.com> #56
support
ja...@gmail.com <ja...@gmail.com> #57
plz fix this issue google! that's important for chinese users. we all try to protect android ecosystem.
ev...@gmail.com <ev...@gmail.com> #58
support
we...@gmail.com <we...@gmail.com> #59
support
ma...@gmail.com <ma...@gmail.com> #60
support
qq...@gmail.com <qq...@gmail.com> #61
我来自酷安。支持一下(´・ω・`)
c1...@gmail.com <c1...@gmail.com> #62
support you
jr...@gmail.com <jr...@gmail.com> #63
The question is very important, and I hope the government will pay attention to it
[Deleted User] <[Deleted User]> #64
I came to CoolApk.com .Support
gx...@gmail.com <gx...@gmail.com> #65
support
li...@gmail.com <li...@gmail.com> #66
Please, please, please
Make your comment HELPFUL to people who watches this issue and the Android team. Once you add a comment, everyone who is related to this issue will receive an email. So, please make your comment meaningful. If you just wanna support it, STAR it and that's enough.
Make your comment HELPFUL to people who watches this issue and the Android team. Once you add a comment, everyone who is related to this issue will receive an email. So, please make your comment meaningful. If you just wanna support it, STAR it and that's enough.
ga...@gmail.com <ga...@gmail.com> #67
ja...@gmail.com <ja...@gmail.com> #68
酷安基佬前来支持
so...@gmail.com <so...@gmail.com> #69
support!
a5...@gmail.com <a5...@gmail.com> #70
来自酷安基佬的支持
[Deleted User] <[Deleted User]> #71
酷安出一份微薄之力
li...@gmail.com <li...@gmail.com> #72
come from cool apk
ye...@gmail.com <ye...@gmail.com> #73
This is a really serious problem.
mj...@gmail.com <mj...@gmail.com> #74
Dear respectable devs.I can see that you're trying to make a great progress in the combat against those "essential malware s".You know, in China, there's still a lot 4 u 2 do. I suggest that you shall add a customizable background policy and initialize them with a recommended one, that will help both advanced players and normal users. May be more, but I hope the issue of the background could be fixed in 2 generations, others are not as patient as we do :). Go check out Brevent.
From Coolapk.
From Coolapk.
we...@gmail.com <we...@gmail.com> #75
support
ji...@gmail.com <ji...@gmail.com> #76
support
hz...@gmail.com <hz...@gmail.com> #77
Good job! Hoping for the feedback from Google.
te...@gmail.com <te...@gmail.com> #78
support
ma...@gmail.com <ma...@gmail.com> #79
酷安支持大队
sm...@gmail.com <sm...@gmail.com> #80
Support
mi...@gmail.com <mi...@gmail.com> #81
100% support!!
im...@gmail.com <im...@gmail.com> #82
star
im...@gmail.com <im...@gmail.com> #83
star
gu...@gmail.com <gu...@gmail.com> #84
coolapk support!!!
ca...@gmail.com <ca...@gmail.com> #85
点星星啊,一群support刷屏
qq...@gmail.com <qq...@gmail.com> #86
coolapk support!!!酷安网友前来支援!
we...@gmail.com <we...@gmail.com> #87
Support!!
z7...@gmail.com <z7...@gmail.com> #88
Support!!
[Deleted User] <[Deleted User]> #89
酷安支持大队
li...@gmail.com <li...@gmail.com> #90
Support~
ar...@gmail.com <ar...@gmail.com> #91
coolapk,,😉support
y1...@gmail.com <y1...@gmail.com> #92
star
y1...@gmail.com <y1...@gmail.com> #93
要点星星!
ma...@gmail.com <ma...@gmail.com> #94
来自酷安的支持,国内软件环境十分恶劣。希望能把这些流氓行为封杀让他们难以生存,尤其是腾讯和360这一类的全家桶软件最烦人
za...@gmail.com <za...@gmail.com> #95
Support ( ͡° ͜ʖ ͡°)✧
m2...@gmail.com <m2...@gmail.com> #96
star
sh...@gmail.com <sh...@gmail.com> #97
support
fx...@gmail.com <fx...@gmail.com> #98
Support
sa...@gmail.com <sa...@gmail.com> #99
CoolApk gays' support
ti...@gmail.com <ti...@gmail.com> #100
大家能不能停下刷 Support 了,每一个 Starred 的人都 Gmail 都快刷爆了,这样毫无意义的 commit 很无聊的好吧?要真的支持麻烦点最上方的星星 OK?
qq...@gmail.com <qq...@gmail.com> #101
Support
q1...@gmail.com <q1...@gmail.com> #102
stat
sd...@gmail.com <sd...@gmail.com> #103
Hope you can deal with it
sh...@gmail.com <sh...@gmail.com> #104
support!!!
ni...@gmail.com <ni...@gmail.com> #105
software scums such as"TencentQQ" "WeChat" should be severely remediedヽ(#`Д´)ノ
gu...@gmail.com <gu...@gmail.com> #106
前来支持
nt...@gmail.com <nt...@gmail.com> #107
support
li...@gmail.com <li...@gmail.com> #108
support
bu...@gmail.com <bu...@gmail.com> #109
Hope Google attention to this issue, concerned about China's Android users. Help us to solve the two procedures, the user does not have the relevant operation of the case to wake up each other, thank you (* ° ∀ °) = 3
sa...@gmail.com <sa...@gmail.com> #110
star
ta...@gmail.com <ta...@gmail.com> #111
support
lo...@gmail.com <lo...@gmail.com> #112
star
ta...@gmail.com <ta...@gmail.com> #113
support
li...@gmail.com <li...@gmail.com> #114
star
li...@gmail.com <li...@gmail.com> #115
中国许多应用不规范。常驻后台,求解决。
mi...@gmail.com <mi...@gmail.com> #116
support
wi...@gmail.com <wi...@gmail.com> #117
star
w1...@gmail.com <w1...@gmail.com> #118
star
we...@gmail.com <we...@gmail.com> #119
酷安基佬前来支持
a2...@gmail.com <a2...@gmail.com> #120
酷基前来支持
10...@qq.com <10...@qq.com> #121
酷安基佬前来支持
wc...@gmail.com <wc...@gmail.com> #122
fuck you tencent,fuck you kingsoft,fuck you wangyi ,fuck alibaba
10...@qq.com <10...@qq.com> #123
官方是时候该遏制住这些“毒瘤”了,都存在了好几年
要不是因为这群毒瘤,安卓绝对不是卡与慢的代名词
要不是因为这群毒瘤,安卓绝对不是卡与慢的代名词
yx...@gmail.com <yx...@gmail.com> #124
haha,come from china
zh...@gmail.com <zh...@gmail.com> #125
支持作者
gu...@outlook.com <gu...@outlook.com> #126
The China's APP is very very…So Google Should …
ta...@gmail.com <ta...@gmail.com> #127
早日制服国内各种毒瘤应用,因为用户多有需求,才肆无忌惮的存在各种流氓权限、相互唤醒、推送各种广告。
ye...@gmail.com <ye...@gmail.com> #128
star
de...@gmail.com <de...@gmail.com> #129
The true enemy of Android in China is disorder.(
ms...@gmail.com <ms...@gmail.com> #130
support
jo...@gmail.com <jo...@gmail.com> #131
Support
zh...@gmail.com <zh...@gmail.com> #132
A serious problem in china with Google's absence.
82...@gmail.com <82...@gmail.com> #133
Well, it's really a serious problem especially in China. Sometimes even greenify can't solve them.
ya...@gmail.com <ya...@gmail.com> #134
Well,it's really a serious problem especially in china.It will damage battery's life
29...@gmail.com <29...@gmail.com> #135
支持
ht...@gmail.com <ht...@gmail.com> #136
wu...@gmail.com <wu...@gmail.com> #137
support
th...@gmail.com <th...@gmail.com> #138
Support
ha...@gmail.com <ha...@gmail.com> #139
support!
rc...@gmail.com <rc...@gmail.com> #140
support
a1...@gmail.com <a1...@gmail.com> #141
support!!!
li...@gmail.com <li...@gmail.com> #142
Support!
ta...@gmail.com <ta...@gmail.com> #143
要支持请点击的上方星星,不要再发Support这没用的。
19...@gmail.com <19...@gmail.com> #144
star
cc...@gmail.com <cc...@gmail.com> #145
support.
go...@gmail.com <go...@gmail.com> #146
要支持请点击的上方Star,不要再发Support,请不要帮倒忙.
qi...@gmail.com <qi...@gmail.com> #148
@Dianne Hackborn @hackbod@google.com @hackbod Please take a look at this for Androd's healthy eco system. Thank you!
oa...@gmail.com <oa...@gmail.com> #149
Re #147: I believe so. Just tested with the initialization sequence of the integrated SDKs swapped. As a result, whichever in the last gets stopped in background, others survive.
BTW, please also review the potential abuse cases mentioned in the first post.
BTW, please also review the potential abuse cases mentioned in the first post.
ai...@gmail.com <ai...@gmail.com> #150
Support.
Google ruthless remediation app wake up chaos it, the Chinese users that dire straits
Google ruthless remediation app wake up chaos it, the Chinese users that dire straits
cb...@gmail.com <cb...@gmail.com> #151
please don't send the "support" ,you can push the "star" button.
请别再发支持了,点击最上面的那个★图标就行了
请别再发支持了,点击最上面的那个★图标就行了
am...@google.com <am...@google.com>
su...@gmail.com <su...@gmail.com> #152
Star
am...@google.com <am...@google.com> #153
Thank you for reporting this issue. We have shared this with our product and engineering team and will update this issue with more information as it becomes available.
la...@gmail.com <la...@gmail.com> #154
support!!!
po...@gmail.com <po...@gmail.com> #155
please don't send the "support" ,you can push the "star" button in the upper left corner.
请别再发送“支持”了,点一下左上角的 ★ 就行了
请别再发送“支持”了,点一下左上角的 ★ 就行了
ms...@gmail.com <ms...@gmail.com> #156
po...@gmail.com <po...@gmail.com> #157
确实不是你发的 support,但是如果你 start 了该 issue,那么以后该 issues 有回复就会抄送给你的~
你可以在该 issues 右上角的"齿轮按钮"设置相关通知。
2017-06-14 18:03 GMT+08:00 <buganizer-system@google.com>:
你可以在该 issues 右上角的"齿轮按钮"设置相关通知。
2017-06-14 18:03 GMT+08:00 <buganizer-system@google.com>:
ar...@google.com <ar...@google.com> #158
Could you please include the source for the app? It seems BackgroundLimitationTest.zip has only one service (unsure of the other 3 services): "GetuiPushService". That is the only one getting stopped after some time.
In addition, could you enumerate what the other apps that were included in the .zip are doing.
Please see the responses inline to the observations you've posted:
1. Restart the service with a frequent periodic alarm (less than 5 minutes), causing the service being stopped and started again and again. (same applied to JobScheduler and SyncAdapter)
1.1. Will not allow an app to bypass background check.
2. Restart the service inside its Service.onDestroy(), reviving the service immediately upon stopping.
2.1. Will not allow an app to bypass background check.
3. Raise the background service to foreground service, when the screen is off to dodge from observation by user.
3.1. Yes running a foreground service does bypass background check, but it must. Note we are working on more UX to help the user know about them doing activities when the screen is off.
4. Bind to each other within 2 services, to fool the activity manager to consider them as bound services.
4.1. Will not allow an app to bypass background check.
5. Restart service from JNI native library with "am start-service".
5.1. Will not allow an app to bypass background check. (This actually *no* different than calling Context.startService, so it is pointless to do this on any version of Android.)
If your test app is running a foreground service, that is probably what is allowing it to stay run. If so, and you remove that, I'd like to know if all the rest falls apart (I would expect so).
In addition, could you enumerate what the other apps that were included in the .zip are doing.
Please see the responses inline to the observations you've posted:
1. Restart the service with a frequent periodic alarm (less than 5 minutes), causing the service being stopped and started again and again. (same applied to JobScheduler and SyncAdapter)
1.1. Will not allow an app to bypass background check.
2. Restart the service inside its Service.onDestroy(), reviving the service immediately upon stopping.
2.1. Will not allow an app to bypass background check.
3. Raise the background service to foreground service, when the screen is off to dodge from observation by user.
3.1. Yes running a foreground service does bypass background check, but it must. Note we are working on more UX to help the user know about them doing activities when the screen is off.
4. Bind to each other within 2 services, to fool the activity manager to consider them as bound services.
4.1. Will not allow an app to bypass background check.
5. Restart service from JNI native library with "am start-service".
5.1. Will not allow an app to bypass background check. (This actually *no* different than calling Context.startService, so it is pointless to do this on any version of Android.)
If your test app is running a foreground service, that is probably what is allowing it to stay run. If so, and you remove that, I'd like to know if all the rest falls apart (I would expect so).
oa...@gmail.com <oa...@gmail.com> #159
Thanks very much for the detailed explanation on the potential abuse cases. But unfortunately, the source code of the 3rd-party SDK is not available, since they are closed-source libraries.
The BackgroundLimitationTest.zip integrated 4 different closed-source SDKs from the major vendors and SDK providers in China. All the 4 SDKs have declared their services within separate AndroidManifest.xml inside each module (one module for each SDK). The app module is just a integration point to include them all.
As you can see when the test app launches and runs in the foreground, it will start 4 service in the background, one for each integrated SDK (listed below with the result of "dumpsys service ...". When it is switched to the background, one of the 4 services stops (whichever starts first), but the other 3 remains running all the time. As mentioned in #147 and #149, I think the main reason that only 1 service gets stopped is due to a bug in the "ActiveServices.stopInBackgroundLocked()" where only the first service is added to the pending list, not all of them, as described in issue 37126419 (https://issuetracker.google.com/issues/37126419 ).
Could you please correct this bug in internal build and run the test app again, to check whether all the 4 services are fully stopped as expected? I'm not sure if there's any issue other than that to prevent all the 4 services from being stopped.
---------------------- Result of "dumpsys service ..." ------------------------------
SERVICE .../com.xiaomi.push.service.XMPushService 64a8dff pid=3829
Client:
nothing to dump
SERVICE .../com.igexin.sdk.PushService 86bf6 pid=(not running)
SERVICE .../com.tencent.android.tpush.service.XGPushServiceV3 66396cf pid=3965
Client:
nothing to dump
SERVICE .../cn.jpush.android.service.PushService 73c57cc pid=3847
Client:
nothing to dump
SERVICE .../com.xiaomi.mipush.sdk.PushMessageHandler 68b8d0 pid=(not running)
SERVICE .../com.getui.demo.GetuiPushService b08e291 pid=3869
Client:
nothing to dump
The BackgroundLimitationTest.zip integrated 4 different closed-source SDKs from the major vendors and SDK providers in China. All the 4 SDKs have declared their services within separate AndroidManifest.xml inside each module (one module for each SDK). The app module is just a integration point to include them all.
As you can see when the test app launches and runs in the foreground, it will start 4 service in the background, one for each integrated SDK (listed below with the result of "dumpsys service ...". When it is switched to the background, one of the 4 services stops (whichever starts first), but the other 3 remains running all the time. As mentioned in #147 and #149, I think the main reason that only 1 service gets stopped is due to a bug in the "ActiveServices.stopInBackgroundLocked()" where only the first service is added to the pending list, not all of them, as described in
Could you please correct this bug in internal build and run the test app again, to check whether all the 4 services are fully stopped as expected? I'm not sure if there's any issue other than that to prevent all the 4 services from being stopped.
---------------------- Result of "dumpsys service ..." ------------------------------
SERVICE .../com.xiaomi.push.service.XMPushService 64a8dff pid=3829
Client:
nothing to dump
SERVICE .../com.igexin.sdk.PushService 86bf6 pid=(not running)
SERVICE .../com.tencent.android.tpush.service.XGPushServiceV3 66396cf pid=3965
Client:
nothing to dump
SERVICE .../cn.jpush.android.service.PushService 73c57cc pid=3847
Client:
nothing to dump
SERVICE .../com.xiaomi.mipush.sdk.PushMessageHandler 68b8d0 pid=(not running)
SERVICE .../com.getui.demo.GetuiPushService b08e291 pid=3869
Client:
nothing to dump
am...@google.com <am...@google.com> #160
Thank you for the necessary information. We'll get back here if we need any information.
oa...@gmail.com <oa...@gmail.com> #161
Due to the massive abuse of foreground service, could you please consider giving user a chance to refuse or stop any foreground service started by an app, probably from the notification panel?
Currently many popular apps in China (even like QQ with 0.9 billion MAU) is forcing the foreground service without providing any related setting options for users. It has the power to do that with its dominant market share.
Currently many popular apps in China (even like QQ with 0.9 billion MAU) is forcing the foreground service without providing any related setting options for users. It has the power to do that with its dominant market share.
ha...@google.com <ha...@google.com> #162
Ah thanks, sorry for misunderstanding. Yes there is a bug in that code with stopping services. I'll take care of it.
qq...@gmail.com <qq...@gmail.com> #164
support!
yh...@gmail.com <yh...@gmail.com> #165
Support
fr...@gmail.com <fr...@gmail.com> #166
support
On Jun 26, 2017 21:22, <buganizer-system@google.com> wrote:
Replying to this email means your email address will be shared with the
team that works on this product.
https://issuetracker.google.com/issues/62480012
*Changed*
*yh...@163.com <yh...@163.com> added comment #165
<https://issuetracker.google.com/issues/62480012#comment165 >:*
Support
_______________________________
*Reference Info: 62480012 Background limitation is not working as expected
for most background services.*
component: Android Public Tracker > Android Developer Preview
status: Fixed
reporter: oa...@gmail.com
assignee: am...@google.com
cc: ar...@google.com, ha...@google.com, na...@google.com, and 1 more
type: Bug P3 S3
blocked by: 62524613 <https://issuetracker.google.com/issues/62524613 >
hotlist: Dev-Preview-O <https://issuetracker.google.com/hotlists/461170 >,
Platform <https://issuetracker.google.com/hotlists/461195 >
Generated by Google IssueTracker notification system
You're receiving this email because you are subscribed to updates on Google
IssueTracker issue 62480012
<https://issuetracker.google.com/issues/62480012 > where you have the role:
starred.
On Jun 26, 2017 21:22, <buganizer-system@google.com> wrote:
Replying to this email means your email address will be shared with the
team that works on this product.
*Changed*
*yh...@163.com <yh...@163.com> added
<
Support
_______________________________
*Reference Info: 62480012 Background limitation is not working as expected
for most background services.*
component: Android Public Tracker > Android Developer Preview
status: Fixed
reporter: oa...@gmail.com
assignee: am...@google.com
cc: ar...@google.com, ha...@google.com, na...@google.com, and 1 more
type: Bug P3 S3
blocked by: 62524613 <
hotlist: Dev-Preview-O <
Platform <
Generated by Google IssueTracker notification system
You're receiving this email because you are subscribed to updates on Google
IssueTracker
<
starred.
li...@gmail.com <li...@gmail.com> #167
Support you !
da...@gmail.com <da...@gmail.com> #168
du...@gmail.com <du...@gmail.com> #169
希望能靠谱(*゚∀゚)
mo...@gmail.com <mo...@gmail.com> #170
support
da...@gmail.com <da...@gmail.com> #171
Support
mp...@gmail.com <mp...@gmail.com> #172
滋瓷
jf...@gmail.com <jf...@gmail.com> #173
点星星啊,不要再发support
wa...@gmail.com <wa...@gmail.com> #174
Can not be better!!!
go...@gmail.com <go...@gmail.com> #175
Thanks for fixing this issue.
BTW, could anyone tell me that if there is any way to see the related codes change for this bug?
BTW, could anyone tell me that if there is any way to see the related codes change for this bug?
mi...@gmail.com <mi...@gmail.com> #176
Great . Thank you man ~
[Deleted User] <[Deleted User]> #177
Support
ji...@gmail.com <ji...@gmail.com> #178
In the latest qq is off the notice has been occupied by the background
se...@gmail.com <se...@gmail.com> #179
support
ji...@gmail.com <ji...@gmail.com> #180
This system can give the user closes the Foreground Service port, malicious software to use the port to usurp the front desk
ke...@gmail.com <ke...@gmail.com> #181
@178
Your screenshots show that the app was using the foreground Service which is displayed (to the users) as "app is running in the background".
That's it.
I aggre with you that the user should be able to set an optional rule that the foreground service will only be preserved when part of the app(exclude notification) is displayed on the screen.
However the Android team seems do not want restrict foreground Service at all.
Currently you have no choice but tools like greenify/brrevent, or similar private ROM implementations as features from certain manufacturer as a workaround,
Your screenshots show that the app was using the foreground Service which is displayed (to the users) as "app is running in the background".
That's it.
I aggre with you that the user should be able to set an optional rule that the foreground service will only be preserved when part of the app(exclude notification) is displayed on the screen.
However the Android team seems do not want restrict foreground Service at all.
Currently you have no choice but tools like greenify/brrevent, or similar private ROM implementations as features from certain manufacturer as a workaround,
ji...@gmail.com <ji...@gmail.com> #182
@181
I also think that this api to join the user to disable the option, but not to sdk version as long as the call this api will have this option!
This port is particularly disgusting and unsafe to just use the rogue app
This thing can provide service level, plus can not let the user choose to continue or close This is obviously to the user watched his cell phone was raped, and rape to death, because the system does not require users to disable.
Android8.0 also have a face that security, and is not to the developers of the most secure will not be killed off the service and broadcast method Yeah, so app can have all the services completely occupied the phone all the resources ( It may not be enough resources for mobile phones)
I also think that this api to join the user to disable the option, but not to sdk version as long as the call this api will have this option!
This port is particularly disgusting and unsafe to just use the rogue app
This thing can provide service level, plus can not let the user choose to continue or close This is obviously to the user watched his cell phone was raped, and rape to death, because the system does not require users to disable.
Android8.0 also have a face that security, and is not to the developers of the most secure will not be killed off the service and broadcast method Yeah, so app can have all the services completely occupied the phone all the resources ( It may not be enough resources for mobile phones)
ji...@gmail.com <ji...@gmail.com> #183
There is one here
link:http://www.jianshu.com/p/0929c4012347
On the Android7.1.1 can not hide Foreground Service Notification analysis
I believe a lot of use Nexus6p or Pixel mobile phone as a development machine students in the upgrade to Android7.1.1 version will be found in the notice column inexplicable will be a lot more notice column, as shown below:
Which is the top of a black hand Q, the following several people can see the name. I was the first reaction is one of our conventional process to protect the program, that is, start the Foreground Service and hide the Notification program in the new system failure. At the same time can also be found, hand Q and the US group as well as QQ music and other applications have adopted the security program. Students who are unfamiliar with the program can refer to here.
So, what did Google do to make the program fail? Fortunately, Google has released the Android25 source, the specific reason Well, only through RTFSC (Read the fucking source code) to find the.
First of all, we know that to hide Notification, we need to call stopForeground (true), follow up this method
public final void stopForeground(boolean removeNotification) {
stopForeground(removeNotification ?STOP_FOREGROUND_REMOVE : 0);
}
Continue to follow up
public final void stopForeground(@StopForegroundFlags int flags) {
try {
mActivityManager.setServiceForeground(
new ComponentName(this, mClassName), mToken, 0, null, flags);
} catch (RemoteException ex) {
}
}
Found that the final call is mActivityManager setServiceForeground method, where the value of flags is STOP_FOREGROUND_REMOVE.
Ok, let's keep up with the setServiceForeground () method. Here first find the statement of the mActivityManager, as follows:
private IActivityManager mActivityManager = null;
Find the new target IActivityManager, continue to follow up and find that the IActivityManager is an interface, and the setServiceForeground () method is an empty implementation, as follows:
public void setServiceForeground(ComponentName className, IBinder token,
int id, Notification notification, int flags) throws RemoteException;
This time, you will find that follow up here has been unable to follow up in Android Studio, because in Android Studio can not find its implementation class. Here is a good tool for reading Android source code - Source Insight.
Finally, we found the IActivityManager implementation class android.app.ActivityManagerNative (the specific process does not expand here), see it on the setServiceForeground () method of specific implementation, as follows:
public void setServiceForeground(ComponentName className, IBinder token,
int id, Notification notification, int flags) throws RemoteException {
Parcel data = Parcel.obtain();
Parcel reply = Parcel.obtain();
data.writeInterfaceToken(IActivityManager.descriptor);
ComponentName.writeToParcel(className, data);
data.writeStrongBinder(token);
data.writeInt(id);
if (notification != null) {
data.writeInt(1);
notification.writeToParcel(data, 0);
} else {
data.writeInt(0);
}
data.writeInt(flags);
mRemote.transact(SET_SERVICE_FOREGROUND_TRANSACTION, data, reply, 0);
reply.readException();
data.recycle();
reply.recycle();
}
You can see that there is still no actual operation here, but through the Binder mechanism to call the remote service (the Android Binder mechanism do not understand the students please consult the relevant information, do not discuss here). Seemingly clues and broken, where the service side in the end which is it? This time Source Insight can play its role, we quickly find com.android.server.am.ActivityManagerService this class inherited from ActivityManagerNative and rewrite the setServiceForeground () method, as follows
@Override
public void setServiceForeground(ComponentName className, IBinder token,
int id, Notification notification, int flags) {
synchronized(this) {
mServices.setServiceForegroundLocked(className, token, id, notification, flags);
}
}
Ha, and again to find a clue. You can see that the final call to the mServices setServiceForegroundLocked () method. So what is mServices?
You can find the mServices statement as follows:
final ActiveServices mServices;
Well, we continue to follow the ActiveServices class, the class's complete class name is: com.android.server.am.ActiveServices, its setServiceForegroundLocked () method is defined as follows:
public void setServiceForegroundLocked(ComponentName className, IBinder token,
int id, Notification notification, int flags) {
final int userId = UserHandle.getCallingUserId();
final long origId = Binder.clearCallingIdentity();
try {
ServiceRecord r = findServiceLocked(className, token, userId);
if (r != null) {
if (id != 0) {
if (notification == null) {
throw new IllegalArgumentException("null notification");
}
if (r.foregroundId != id) {
cancelForegroudNotificationLocked(r);
r.foregroundId = id;
}
notification.flags |= Notification.FLAG_FOREGROUND_SERVICE;
r.foregroundNoti = notification;
r.isForeground = true;
r.postNotification();
if (r.app != null) {
updateServiceForegroundLocked(r.app , true);
}
getServiceMap(r.userId).ensureNotStartingBackground(r);
mAm.notifyPackageUse(r.serviceInfo.packageName,
PackageManager.NOTIFY_PACKAGE_USE_FOREGROUND_SERVICE);
} else {
if (r.isForeground) {
r.isForeground = false;
if (r.app != null) {
mAm.updateLruProcessLocked(r.app , false, null);
updateServiceForegroundLocked(r.app , true);
}
}
//注意这里的STOP_FOREGROUND_REMOVE
if ((flags & Service.STOP_FOREGROUND_REMOVE) != 0) {
cancelForegroudNotificationLocked(r);
r.foregroundId = 0;
r.foregroundNoti = null;
} else if (r.appInfo.targetSdkVersion >= Build.VERSION_CODES.LOLLIPOP) {
r.stripForegroundServiceFlagFromNotification();
if ((flags & Service.STOP_FOREGROUND_DETACH) != 0) {
r.foregroundId = 0;
r.foregroundNoti = null;
}
}
}
}
} finally {
Binder.restoreCallingIdentity(origId);
}
}
This method is more code, we can focus on the place I note. Remember the flag I mentioned earlier STOP_FOREGROUND_REMOVE? Aha, it seems that we finally found a place. See here, cancelForegroudNotificationLocked () method should be where we are looking for, and continue to follow up, Sure, here the implementation of the real operation, the code is as follows:
private void cancelForegroudNotificationLocked(ServiceRecord r) {
if (r.foregroundId != 0) {
// First check to see if this app has any other active foreground services
// with the same notification ID. If so, we shouldn't actually cancel it,
// because that would wipe away the notification that still needs to be shown
// due the other service.
ServiceMap sm = getServiceMap(r.userId);
if (sm != null) {
for (int i = sm.mServicesByName.size()-1; i >= 0; i--) {
ServiceRecord other = sm.mServicesByName.valueAt(i);
if (other != r && other.foregroundId == r.foregroundId
&& other.packageName.equals(r.packageName)) {
// Found one! Abort the cancel.
return;
}
}
}
r.cancelNotification();
}
}
Now all really like white, the original system will be judged here, if there is the same id the existence of Notification, then directly return! The The We look at the above method is the meaning of the note.
in conclusion
Although the hidden Foreground Service Notification in the Android SDK 25 on the failure, but the security effect is not affected.
Feeling should be no matter how many api can use this api call each other and service has been running it
This is really a better rogue funny to provide rogue apps
link:
On the Android7.1.1 can not hide Foreground Service Notification analysis
I believe a lot of use Nexus6p or Pixel mobile phone as a development machine students in the upgrade to Android7.1.1 version will be found in the notice column inexplicable will be a lot more notice column, as shown below:
Which is the top of a black hand Q, the following several people can see the name. I was the first reaction is one of our conventional process to protect the program, that is, start the Foreground Service and hide the Notification program in the new system failure. At the same time can also be found, hand Q and the US group as well as QQ music and other applications have adopted the security program. Students who are unfamiliar with the program can refer to here.
So, what did Google do to make the program fail? Fortunately, Google has released the Android25 source, the specific reason Well, only through RTFSC (Read the fucking source code) to find the.
First of all, we know that to hide Notification, we need to call stopForeground (true), follow up this method
public final void stopForeground(boolean removeNotification) {
stopForeground(removeNotification ?STOP_FOREGROUND_REMOVE : 0);
}
Continue to follow up
public final void stopForeground(@StopForegroundFlags int flags) {
try {
mActivityManager.setServiceForeground(
new ComponentName(this, mClassName), mToken, 0, null, flags);
} catch (RemoteException ex) {
}
}
Found that the final call is mActivityManager setServiceForeground method, where the value of flags is STOP_FOREGROUND_REMOVE.
Ok, let's keep up with the setServiceForeground () method. Here first find the statement of the mActivityManager, as follows:
private IActivityManager mActivityManager = null;
Find the new target IActivityManager, continue to follow up and find that the IActivityManager is an interface, and the setServiceForeground () method is an empty implementation, as follows:
public void setServiceForeground(ComponentName className, IBinder token,
int id, Notification notification, int flags) throws RemoteException;
This time, you will find that follow up here has been unable to follow up in Android Studio, because in Android Studio can not find its implementation class. Here is a good tool for reading Android source code - Source Insight.
Finally, we found the IActivityManager implementation class android.app.ActivityManagerNative (the specific process does not expand here), see it on the setServiceForeground () method of specific implementation, as follows:
public void setServiceForeground(ComponentName className, IBinder token,
int id, Notification notification, int flags) throws RemoteException {
Parcel data = Parcel.obtain();
Parcel reply = Parcel.obtain();
data.writeInterfaceToken(IActivityManager.descriptor);
ComponentName.writeToParcel(className, data);
data.writeStrongBinder(token);
data.writeInt(id);
if (notification != null) {
data.writeInt(1);
notification.writeToParcel(data, 0);
} else {
data.writeInt(0);
}
data.writeInt(flags);
mRemote.transact(SET_SERVICE_FOREGROUND_TRANSACTION, data, reply, 0);
reply.readException();
data.recycle();
reply.recycle();
}
You can see that there is still no actual operation here, but through the Binder mechanism to call the remote service (the Android Binder mechanism do not understand the students please consult the relevant information, do not discuss here). Seemingly clues and broken, where the service side in the end which is it? This time Source Insight can play its role, we quickly find com.android.server.am.ActivityManagerService this class inherited from ActivityManagerNative and rewrite the setServiceForeground () method, as follows
@Override
public void setServiceForeground(ComponentName className, IBinder token,
int id, Notification notification, int flags) {
synchronized(this) {
mServices.setServiceForegroundLocked(className, token, id, notification, flags);
}
}
Ha, and again to find a clue. You can see that the final call to the mServices setServiceForegroundLocked () method. So what is mServices?
You can find the mServices statement as follows:
final ActiveServices mServices;
Well, we continue to follow the ActiveServices class, the class's complete class name is: com.android.server.am.ActiveServices, its setServiceForegroundLocked () method is defined as follows:
public void setServiceForegroundLocked(ComponentName className, IBinder token,
int id, Notification notification, int flags) {
final int userId = UserHandle.getCallingUserId();
final long origId = Binder.clearCallingIdentity();
try {
ServiceRecord r = findServiceLocked(className, token, userId);
if (r != null) {
if (id != 0) {
if (notification == null) {
throw new IllegalArgumentException("null notification");
}
if (r.foregroundId != id) {
cancelForegroudNotificationLocked(r);
r.foregroundId = id;
}
notification.flags |= Notification.FLAG_FOREGROUND_SERVICE;
r.foregroundNoti = notification;
r.isForeground = true;
r.postNotification();
if (
updateServiceForegroundLocked(
}
getServiceMap(r.userId).ensureNotStartingBackground(r);
mAm.notifyPackageUse(r.serviceInfo.packageName,
PackageManager.NOTIFY_PACKAGE_USE_FOREGROUND_SERVICE);
} else {
if (r.isForeground) {
r.isForeground = false;
if (
mAm.updateLruProcessLocked(
updateServiceForegroundLocked(
}
}
//注意这里的STOP_FOREGROUND_REMOVE
if ((flags & Service.STOP_FOREGROUND_REMOVE) != 0) {
cancelForegroudNotificationLocked(r);
r.foregroundId = 0;
r.foregroundNoti = null;
} else if (r.appInfo.targetSdkVersion >= Build.VERSION_CODES.LOLLIPOP) {
r.stripForegroundServiceFlagFromNotification();
if ((flags & Service.STOP_FOREGROUND_DETACH) != 0) {
r.foregroundId = 0;
r.foregroundNoti = null;
}
}
}
}
} finally {
Binder.restoreCallingIdentity(origId);
}
}
This method is more code, we can focus on the place I note. Remember the flag I mentioned earlier STOP_FOREGROUND_REMOVE? Aha, it seems that we finally found a place. See here, cancelForegroudNotificationLocked () method should be where we are looking for, and continue to follow up, Sure, here the implementation of the real operation, the code is as follows:
private void cancelForegroudNotificationLocked(ServiceRecord r) {
if (r.foregroundId != 0) {
// First check to see if this app has any other active foreground services
// with the same notification ID. If so, we shouldn't actually cancel it,
// because that would wipe away the notification that still needs to be shown
// due the other service.
ServiceMap sm = getServiceMap(r.userId);
if (sm != null) {
for (int i = sm.mServicesByName.size()-1; i >= 0; i--) {
ServiceRecord other = sm.mServicesByName.valueAt(i);
if (other != r && other.foregroundId == r.foregroundId
&& other.packageName.equals(r.packageName)) {
// Found one! Abort the cancel.
return;
}
}
}
r.cancelNotification();
}
}
Now all really like white, the original system will be judged here, if there is the same id the existence of Notification, then directly return! The The We look at the above method is the meaning of the note.
in conclusion
Although the hidden Foreground Service Notification in the Android SDK 25 on the failure, but the security effect is not affected.
Feeling should be no matter how many api can use this api call each other and service has been running it
This is really a better rogue funny to provide rogue apps
ha...@google.com <ha...@google.com> #184
Sorry I am having a lot of trouble following this discussion. If there is a security issues that is being discussed, that shoul be separately filed as a security bug (and maybe get your bug bounty reward!). If there is just some behavior bug being reported... well, I am having a hard time understanding the report. :)
ji...@gmail.com <ji...@gmail.com> #185
ok
ji...@gmail.com <ji...@gmail.com> #186
<ha...@google.com> #184
You are the google staff is it!
You are the google staff is it!
ji...@gmail.com <ji...@gmail.com> #187
Sorry! I do not know how to delete! I just looking for deleted buttons can not find ,,,, Can you tell me how to operate. I was here for the first time
ji...@gmail.com <ji...@gmail.com> #188
I just said these things is the rogue app dry thing. As long as there is a little bit of loopholes they can drill
Plus I closed the background to run, they still have been running
Plus I closed the background to run, they still have been running
ji...@gmail.com <ji...@gmail.com> #189
My security report is very simple, that is, the Foreground Service this notification api provided to the user to stop the option on the line. This api itself has a problem
ha...@google.com <ha...@google.com> #190
Sorry I am really having trouble following. What is the problem? It would be really helpful if you could provide specific information about:
1. How you are using the API.
2. What you expect to have happen.
3. What is actually happening.
I can't understand what "user to stop the option on the line" means.
1. How you are using the API.
2. What you expect to have happen.
3. What is actually happening.
I can't understand what "user to stop the option on the line" means.
ji...@gmail.com <ji...@gmail.com> #191
1. After notification authority and run in the background permissions can close these use Foreground service API to improve their service level of app, then notify the authority can shut off the Foreground service API
2. Let me explain, I met when I used an app. Notify the authority and run in the background after permission I already disabled, but this app using Foreground service API to this app can still run.
3. I hope so, running background permissions can close off the Foreground service API is used to improve the service
2. Let me explain, I met when I used an app. Notify the authority and run in the background after permission I already disabled, but this app using Foreground service API to this app can still run.
3. I hope so, running background permissions can close off the Foreground service API is used to improve the service
ji...@gmail.com <ji...@gmail.com> #192
你好,ha...@google.com>
1. After notification authority and run in the background permissions can close these use Foreground service API to improve their service level of app, then notify the authority can shut off the Foreground service API
2. Let me explain, I met when I used an app. Notify the authority and run in the background after permission I already disabled, but this app using Foreground service API to this app can still run.
3. I hope so, running background permissions can close off the Foreground service API is used to improve the service
1. After notification authority and run in the background permissions can close these use Foreground service API to improve their service level of app, then notify the authority can shut off the Foreground service API
2. Let me explain, I met when I used an app. Notify the authority and run in the background after permission I already disabled, but this app using Foreground service API to this app can still run.
3. I hope so, running background permissions can close off the Foreground service API is used to improve the service
ji...@gmail.com <ji...@gmail.com> #193
ha...@google.com>
I'm sorry to bring you some of the problems, the fact is that I didn't know Foreground Service is what specific services, now I know, Foreground Service (typically notification bar has a row out notification) completely from all background restrictions. As you can imagine, the notifications for mobile phones may not be able to look right
Here I hope I can in the system Settings provide a control Foreground Service access to the user
I'm sorry to bring you some of the problems, the fact is that I didn't know Foreground Service is what specific services, now I know, Foreground Service (typically notification bar has a row out notification) completely from all background restrictions. As you can imagine, the notifications for mobile phones may not be able to look right
Here I hope I can in the system Settings provide a control Foreground Service access to the user
ke...@gmail.com <ke...@gmail.com> #194
@193
Consider filing a new issue report.
However you might probably expect a "working as intented" refuse, according to recent changes.
Another clue:
https://issuetracker.google.com/issues/64196561
"This notification is the means we have to inform the user about apps that might misuse foreground services, and so it cannot be blocked."
The Android team seems to make sure the user get informed only, rather than give them the power to mitigate such abuse(they should at least have it as an experimental OP in appops).
Consider filing a new issue report.
However you might probably expect a "working as intented" refuse, according to recent changes.
Another clue:
"This notification is the means we have to inform the user about apps that might misuse foreground services, and so it cannot be blocked."
The Android team seems to make sure the user get informed only, rather than give them the power to mitigate such abuse(they should at least have it as an experimental OP in appops).
ji...@gmail.com <ji...@gmail.com> #195
@194
I understand that this system notification is telling the user what to do with the foreground service, which is good.
And I am hope can join to stop the service on the basis of this option, because some app is very like to play rascal, so I'm not saying don't let the app keep alive, is like the system to the user more permissions allow us to better use
I understand that this system notification is telling the user what to do with the foreground service, which is good.
And I am hope can join to stop the service on the basis of this option, because some app is very like to play rascal, so I'm not saying don't let the app keep alive, is like the system to the user more permissions allow us to better use
ji...@gmail.com <ji...@gmail.com> #196
@194
I know this notice is telling the user that the app is using the foreground service, which I understand
So I can like is for the user a more option to disable this front desk service outage or the background, can give the user to control whether an application can run in the background service, or broadcast the permissions option is a great design, I like Google can provide android for android users with one of these options.
Currently 8.0 dp4 is not able to control this foreground service, so I would like to add the foreground service to the control option
I know this notice is telling the user that the app is using the foreground service, which I understand
So I can like is for the user a more option to disable this front desk service outage or the background, can give the user to control whether an application can run in the background service, or broadcast the permissions option is a great design, I like Google can provide android for android users with one of these options.
Currently 8.0 dp4 is not able to control this foreground service, so I would like to add the foreground service to the control option
pe...@gmail.com <pe...@gmail.com> #197
I was thinking of the same question, there is not a way for user to enable or disable the app's foreground service request. So i even make this issue:
Is there a way for user to allow or deny the app's ForegroundService even if it design for Android O or not?:
https://issuetracker.google.com/issues/64621473
And i have another question, consider this scenes:
A Music app, that need a foreground service to play music in background, another foreground service to run push service.
But as a user, I have to enable the music foreground service, but i don't want to enable it run push foreground service.
So, I think will need the options to enable or disable app foreground service, and will also need the options to enable or disable different foreground service in the same app .
And it is very important for us in china, we can't expect the app to follow the rules,we only expect the system to defense them。
Is there a way for user to allow or deny the app's ForegroundService even if it design for Android O or not?:
And i have another question, consider this scenes:
A Music app, that need a foreground service to play music in background, another foreground service to run push service.
But as a user, I have to enable the music foreground service, but i don't want to enable it run push foreground service.
So, I think will need the options to enable or disable app foreground service, and will also need the options to enable or disable different foreground service in the same app .
And it is very important for us in china, we can't expect the app to follow the rules,we only expect the system to defense them。
ji...@gmail.com <ji...@gmail.com> #198
@197
It occurred to me. You can choose control by serving as a unit
It occurred to me. You can choose control by serving as a unit
ha...@google.com <ha...@google.com> #199
There is no way to break the app and disable its foreground service. We may investigate further controls in the future. (For now you can either force stop the app, or uninstall it / complain to the developer.)
No app needs a foreground service for a push service. If they are doing that, they are wrong. (If they are on a GMS device, they absolutely should be using Firebase Cloud Messaging. If they are on a non-GMS device, they can ask the user to put them on the battery whitelist which will allow them to have a long-running background service with no network restrictions.)
No app needs a foreground service for a push service. If they are doing that, they are wrong. (If they are on a GMS device, they absolutely should be using Firebase Cloud Messaging. If they are on a non-GMS device, they can ask the user to put them on the battery whitelist which will allow them to have a long-running background service with no network restrictions.)
ha...@google.com <ha...@google.com> #200
Btw, China as it stands is deeply problematic, the lack of a standard cloud messaging service puts system health in terrible shape, since it is just not scalable or viable to have every app wanting to get push notifications running its own service. There just isn't anything the platform's management of services is going to do about this that will make it a good situation.
ji...@gmail.com <ji...@gmail.com> #201
@ha...@google.com
They've done this disgusting behavior, and it's going to get worse
I hope that Google will give users a control over the foreground service on the system
I said the situation is now, and now we have an app that does that
They've done this disgusting behavior, and it's going to get worse
I hope that Google will give users a control over the foreground service on the system
I said the situation is now, and now we have an app that does that
ji...@gmail.com <ji...@gmail.com> #202
ha...@google.com
Thank you for your understanding! Hopefully this android will give us users the power to manage those apps
Google has always given developers so many permissions, it's time to give users permission
Thank you for your understanding! Hopefully this android will give us users the power to manage those apps
Google has always given developers so many permissions, it's time to give users permission
ji...@gmail.com <ji...@gmail.com> #203
@ha...@google.com
Our users are willing to lose the backstage notification and other functions. We only hope that Google will give users a front service control option
You said they were wrong, but you Google just let them do it. And don't give the user some permissions to control them, this is safe,,,,,,,, where security,,,,,,,, this is not to let the app rape our users and we haven't to a little rebel
Our users are willing to lose the backstage notification and other functions. We only hope that Google will give users a front service control option
You said they were wrong, but you Google just let them do it. And don't give the user some permissions to control them, this is safe,,,,,,,, where security,,,,,,,, this is not to let the app rape our users and we haven't to a little rebel
ji...@gmail.com <ji...@gmail.com> #204
You gave them so many privileges, why they can't, this is your carelessness, brick of vulnerability is don't gave them permission, say not to do so they will listen to you of, really naive, no wonder system so unsafe, but also can make cancer apk has been chaos to bind their own apk in the background. And they can casually access user information and so on in the background. Is that safe?
ji...@gmail.com <ji...@gmail.com> #205
You say can't use, then why not remove this authority, open a mouth every day to let them come to brick
ji...@gmail.com <ji...@gmail.com> #206
How can you not force the front service to demote, or provide an option that doesn't allow the foreground service to run in the background
ji...@gmail.com <ji...@gmail.com> #207
Investigate what? This time, it is not the issue of the issue that you can do better, directly to a mandatory background stop service operation option, even the bindservice is also limited together, at least to the user at the bottom
Our users have been these rogue app raped for many years, the user permission to us, don't tell me how how, this will give the user a guaranteed at least, your system is doesn't even have a guaranteed experience to users
Our users have been these rogue app raped for many years, the user permission to us, don't tell me how how, this will give the user a guaranteed at least, your system is doesn't even have a guaranteed experience to users
ji...@gmail.com <ji...@gmail.com> #208
Say it! If you can't control the foreground and bindservice. Results also is not the same as before, the app running, also won't end applications because of the service or the front desk service oh, a appbind out a large app to continue running in the background, how much ram, how strong the soc is useless, because they eat enough
ji...@gmail.com <ji...@gmail.com> #209
This is what you call android8 security. I really want to laugh
ji...@gmail.com <ji...@gmail.com> #210
Even a cancer apk can't handle it and says it's safe
ji...@gmail.com <ji...@gmail.com> #211
@ha...@google.com
This app USES the front desk service to keep running, how can you not control the app
Don't say uninstall, android can control the front desk service of this app and say it's safe, this app is just one of them
This app USES the front desk service to keep running, how can you not control the app
Don't say uninstall, android can control the front desk service of this app and say it's safe, this app is just one of them
ha...@google.com <ha...@google.com> #212
This is no longer really relevant to this bug. Background restrictions is working as expected, and one of those expectations is to not impact foreground services and allow them to run (for the most part) as they did pre-O. There is certainly some discussion to have about management of foreground services (and as I said it may be something to consider in a future release), but that is not a discussion relevant to this bug (or O in general).
ji...@gmail.com <ji...@gmail.com> #213
Hope to join the front desk service control options as soon as possible! You give the developer's authority is already high so that users can not be used normally
ji...@gmail.com <ji...@gmail.com> #214
Hope to add this control in version 8.1! Do you think that your control is good? You have been leaving the gap for the developer to drill
ji...@gmail.com <ji...@gmail.com> #215
This is terrible than the bug, as you expected to give the front desk service and bind service is not controlled! Good rape users
ha...@google.com <ha...@google.com> #216
Let's not start talking about rape. And this is completely off-topic of this bug, which is about background execution limits, which had a very specific goal for the kind of control it provides, which is not this. I don't think there is anything really more to discuss here, unless there are any additional issues specifically about background restrictions.
pe...@gmail.com <pe...@gmail.com> #217
This issue is fixed, and what we are discussing is the user control of foreground service.So I report this issue:
Is there a way for user to allow or deny the app's ForegroundService even if it design for Android O or not?
https://issuetracker.google.com/issues/64621473
If you think the Android system need the feature, you can star this issue and keep an look at it.
I have use android for almost 8 years, and as an developer for almost 5 years. GCM or FCM is not usefull in china, so at the past time, every app will launch a seperate process for push, and service is abused,you may can not imagine how manay process and services runs in the background and it also launch other app relate to the front。
We endure this situation for so long,and most of iOS user laugh Android for lagging,
In the above, I commit as a user, in fact i am also an Android developer,@ji...@gmail.com @ha...@google.com, but i am also hope the system will add this feature to option the foreground.Do not expect developer to allow the rule(most of them may be forced by the push need),let the user decide(Just like the dynamic permission).I also have an ipad, if app want run in background, when you move the app to background ,the will be a alert for user to alow or deny it run in background.
We are here because we love Android and hope it become more nice to the user, and Android O is a good start, i hope this feature will be considered.
Is there a way for user to allow or deny the app's ForegroundService even if it design for Android O or not?
If you think the Android system need the feature, you can star this issue and keep an look at it.
I have use android for almost 8 years, and as an developer for almost 5 years. GCM or FCM is not usefull in china, so at the past time, every app will launch a seperate process for push, and service is abused,you may can not imagine how manay process and services runs in the background and it also launch other app relate to the front。
We endure this situation for so long,and most of iOS user laugh Android for lagging,
In the above, I commit as a user, in fact i am also an Android developer,@ji...@gmail.com @ha...@google.com, but i am also hope the system will add this feature to option the foreground.Do not expect developer to allow the rule(most of them may be forced by the push need),let the user decide(Just like the dynamic permission).I also have an ipad, if app want run in background, when you move the app to background ,the will be a alert for user to alow or deny it run in background.
We are here because we love Android and hope it become more nice to the user, and Android O is a good start, i hope this feature will be considered.
ji...@gmail.com <ji...@gmail.com> #218
@217
兄弟说得好!我个人还不如开发者!也是非常关心Android 和谷歌!没想到……………哎!
小兄弟你qq多少呀!加个好友吧
兄弟说得好!我个人还不如开发者!也是非常关心Android 和谷歌!没想到……………哎!
小兄弟你qq多少呀!加个好友吧
av...@gmail.com <av...@gmail.com> #219
support you , but, actually,you can't stop a app (like wechat) wake up the other in background
fa...@gmail.com <fa...@gmail.com> #220
good joba!
hx...@gmail.com <hx...@gmail.com> #221
This issue was fixed. So please don't post stupid "support" message.
All of people who subscribed this issue will received E-mail. It is pretty
annoying.
Thanks.
————
Translation for those Chinese guy:
这个问题做出很久以前就修复了,所以请不要再发愚蠢的支持消息。
所有订阅这个 issue 的都会因此抄送到电子邮件。这相当恼人。
谢谢!
--Tom
2017年8月22日 下午8:23, <buganizer-system@google.com>写道:
All of people who subscribed this issue will received E-mail. It is pretty
annoying.
Thanks.
————
Translation for those Chinese guy:
这个问题做出很久以前就修复了,所以请不要再发愚蠢的支持消息。
所有订阅这个 issue 的都会因此抄送到电子邮件。这相当恼人。
谢谢!
--Tom
2017年8月22日 下午8:23, <buganizer-system@google.com>写道:
ke...@diyism.com <ke...@diyism.com> #222
This issue is still there when to use "Square button" to kill while not to use "Back button" to close,
on my nexus 6p with latest android version 8.0.0 and build number opr5.170623.007.
Reproduction step:
1. Go to "Apps & notifications/App info/DingTalk/Battery/Background activity", switch off
2. Go to "System/Developer options/Don't keep actitivies", switch on
3. Open DingTalk
4. Use "Square button" and "X button on right-top corner" to kill DingTalk (not use "Back button" to close DingTalk)
5. Wait 10 minutes, the DingTalk 2 processes and 4 services is still in "System/Developer options/Running services"
on my nexus 6p with latest android version 8.0.0 and build number opr5.170623.007.
Reproduction step:
1. Go to "Apps & notifications/App info/DingTalk/Battery/Background activity", switch off
2. Go to "System/Developer options/Don't keep actitivies", switch on
3. Open DingTalk
4. Use "Square button" and "X button on right-top corner" to kill DingTalk (not use "Back button" to close DingTalk)
5. Wait 10 minutes, the DingTalk 2 processes and 4 services is still in "System/Developer options/Running services"
ke...@diyism.com <ke...@diyism.com> #223
And the "Back button" bug is also still there, google engineers sucks:
on nexus 6p, android version 8.0.0, build number OPR5.170623.011.
Reproduction step:
1. Install VidCompact fromhttps://play.google.com/store/apps/details?id=com.xvideostudio.videocompress&hl=en
2. Go to "Apps & notifications/App info/VidCompact/Battery/Background activity", switch off
3. Go to "System/Developer options/Don't keep actitivies", switch on
4. Open VidCompact
5. Use "Back button" to exit VidCompact
6. Waiting for over 65 seconds, the 2 processes and 1 service of VidCompact are still in "System/Developer options/Running services"
on nexus 6p, android version 8.0.0, build number OPR5.170623.011.
Reproduction step:
1. Install VidCompact from
2. Go to "Apps & notifications/App info/VidCompact/Battery/Background activity", switch off
3. Go to "System/Developer options/Don't keep actitivies", switch on
4. Open VidCompact
5. Use "Back button" to exit VidCompact
6. Waiting for over 65 seconds, the 2 processes and 1 service of VidCompact are still in "System/Developer options/Running services"
fr...@gmail.com <fr...@gmail.com> #224
ke...@gmail.com <ke...@gmail.com> #225
@223
This has nothing to do with the limitation introduced in Oreo(actually nougat).
You should turn its RUN_IN_BACKGROUND OP to ignore, or toggle its background activity option off, then test its behavior.
Both are exact the same thing.
Note the background activity option does not always show up, and this is why I tell you the alternative approach using appops to the same setting.
"Don't keep actitivies" in developer option means when you leave an activity, then it is destroyed(similar to the activity itself calls finish()).
This has nothing to do with the limitation introduced in Oreo(actually nougat).
You should turn its RUN_IN_BACKGROUND OP to ignore, or toggle its background activity option off, then test its behavior.
Both are exact the same thing.
Note the background activity option does not always show up, and this is why I tell you the alternative approach using appops to the same setting.
"Don't keep actitivies" in developer option means when you leave an activity, then it is destroyed(similar to the activity itself calls finish()).
ke...@diyism.com <ke...@diyism.com> #226
Great work! In Android 8.1, the Square Button Killing can kill the app's services altogether now.
ke...@diyism.com <ke...@diyism.com> #227
Found a new forever process:
1. install a debug apk;
2. adb shell run-as this debug package;
3. uninstall this debug apk;
4. the run-as shell will be running forever until rebooting system.
1. install a debug apk;
2. adb shell run-as this debug package;
3. uninstall this debug apk;
4. the run-as shell will be running forever until rebooting system.
ke...@diyism.com <ke...@diyism.com> #228
Found a new forever process:
1. install a debug apk;
2. adb shell run-as this debug package;
3. uninstall this debug apk;
4. the run-as shell will be running forever until rebooting system. Use "adb shell ps -Af" to found the forever run-as shell process.
1. install a debug apk;
2. adb shell run-as this debug package;
3. uninstall this debug apk;
4. the run-as shell will be running forever until rebooting system. Use "adb shell ps -Af" to found the forever run-as shell process.
ha...@google.com <ha...@google.com> #229
Sorry, that is unrelated to this bug. The shell allows you to do a lot of things that regular apps can't do. Background execution limits are for things apps themselves can do.
ke...@diyism.com <ke...@diyism.com> #230
Android 8.1.0, Security Patch May 5,2018, Build number OPM2.171019.029.A1
The DingTalk process running forever in "Settings/System/Developer options/Running services",
even if i switch on it in "Settings/System/Developer options/Apps/Backgroud check"
https://play.google.com/store/apps/details?id=com.alibaba.android.rimet
Only these service left in "Settings/System/Developer options/Running services":
Settings: 1 process and 0 services
DingTalk: 3 processes and 3 services(LightAppService, LWPService, ListenPhoneService, com.alibaba.android.rimet, com.alibaba.android.rimet:channel, com.alibaba.android.rimet:tools)
Android System: 1 process and 1 service
com.qualcomm.qcrilmstgtunnel: 1 process and 1 service
Google Play services: 1 process and 1 service(GoolgeLocationService, com.google.android.gms.persistent)
com.huawei.sarcontrolservice: 1 process and 1 service
Google Pinyin Input: 1 process and 1 service
Even i clicked all the 3 service "STOP" buttons, and the "DingTalk(3 processes and 3 services)" disappred,
but after 3 seconds, "DingTalk(3 processes and 3 services)" appears again.
The DingTalk process running forever in "Settings/System/Developer options/Running services",
even if i switch on it in "Settings/System/Developer options/Apps/Backgroud check"
Only these service left in "Settings/System/Developer options/Running services":
Settings: 1 process and 0 services
DingTalk: 3 processes and 3 services(LightAppService, LWPService, ListenPhoneService, com.alibaba.android.rimet, com.alibaba.android.rimet:channel, com.alibaba.android.rimet:tools)
Android System: 1 process and 1 service
com.qualcomm.qcrilmstgtunnel: 1 process and 1 service
Google Play services: 1 process and 1 service(GoolgeLocationService, com.google.android.gms.persistent)
com.huawei.sarcontrolservice: 1 process and 1 service
Google Pinyin Input: 1 process and 1 service
Even i clicked all the 3 service "STOP" buttons, and the "DingTalk(3 processes and 3 services)" disappred,
but after 3 seconds, "DingTalk(3 processes and 3 services)" appears again.
ke...@diyism.com <ke...@diyism.com> #231
Nexus 6P, Android 8.1.0, Security Patch June 5,2018, Build number OPM6.171019.030.B1
The DingTalk process is still running forever in "Settings/System/Developer options/Running services".
The DingTalk process is still running forever in "Settings/System/Developer options/Running services".
ke...@diyism.com <ke...@diyism.com> #232
Android 8.1.0, Security Patch May 5,2018, Build number OPM2.171019.029.A1
The DingTalk process running forever in "Settings/System/Developer options/Running services",
even if i switch on it in "Settings/System/Developer options/Apps/Backgroud check"
....
===========================================
Faint, my fault, in "Settings/System/Developer options/Apps/Backgroud check", "switch on" means "no background check", "switch off" means "background check"
The DingTalk process running forever in "Settings/System/Developer options/Running services",
even if i switch on it in "Settings/System/Developer options/Apps/Backgroud check"
....
===========================================
Faint, my fault, in "Settings/System/Developer options/Apps/Backgroud check", "switch on" means "no background check", "switch off" means "background check"
ke...@gmail.com <ke...@gmail.com> #233
@232
"Settings/System/Developer options/Apps/Backgroud check" refer exactly to the AppOps option RUN_IN_BACKGROUND, while in Android 9, a new RUN_ANY_IN_BACKGROUND (can be accessed directly in apps' battery settings) seems to provide more restrictions.
"Settings/System/Developer options/Apps/Backgroud check" refer exactly to the AppOps option RUN_IN_BACKGROUND, while in Android 9, a new RUN_ANY_IN_BACKGROUND (can be accessed directly in apps' battery settings) seems to provide more restrictions.
Description
OPP3.170518.006
* What device are you using?
Nexus 5X
* What are the steps to reproduce the problem?
Start the app (attached, targeting SDK 26), multiple services (from commonly used 3rd-party libraries in China) will be started.
Exit the app with "back" button.
Wait for 10 minutes.
* Issue Category
Framework (platform)
* What was the expected result?
Background services should be stopped as described in the Background Limitation section of Android O preview documents.
* What was the actual result?
Only 1 of the 4 services is stopped, other 3 services are still running in the background.
* Relevant logcat output.
W/ActivityManager: Stopping service due to app idle: u0a186 -1m49s219ms ...
(The only 1 service stopped, no such log for other 3 services)
* Test project. (shared attachment)
"app-debug.apk" within the attachment is the prebuilt APK with debug signature.
-----
In my observation and test, there are several tricks (commonly used by 3rd-party SDK libraries to keep their services from being killed by Android system or 3rd-party optimization tools) which could game the background limitation introduced in Android O:
1. Restart the service with a frequent periodic alarm (less than 5 minutes), causing the service being stopped and started again and again. (same applied to JobScheduler and SyncAdapter)
2. Restart the service inside its Service.onDestroy(), reviving the service immediately upon stopping.
3. Raise the background service to foreground service, when the screen is off to dodge from observation by user.
4. Bind to each other within 2 services, to fool the activity manager to consider them as bound services.
5. Restart service from JNI native library with "am start-service".
and many more I'm not aware, since they are mostly closed source libraries.