Flurry agent, sending out data!!! - Nexus One Q&A, Help & Troubleshooting

I saw something in my logcat about "Flurry Agent" sending out data to its server. It looks like it collects analytics about certain apps and uploads it.
Does anyone know how to remove/disable this?
A hosts file addition is one way.
Some google search results:
Flurry-Legal
flurry-legal-dcma
Comes with Locale. (I don't have locale installed anymore, yet Flurry was running)
A search on my phone turned up nothing. It may be a library inside an apk.
find / -name "*lurry*"

I've added these line to my hosts file ( /etc/hosts )
127.0.0.1 data.flurry.com
127.0.0.1 flurry.com
127.0.0.1 dev.flurry.com
The below data shows up on the dashboard once flury is added to an app.
Application The name of the application.
New Users The number of new users who used the application for the first time during the specified time period.
Active Users The number of unique users who used the application during the last complete week of the specified time period.
Sessions The total number of user sessions that occurred during the specified time period.
Weekly Growth The percentage increase of new users between the last two complete weeks of the specified time period.
User Retention The percent of users that signed up during the time period have used the app during the last 7 days before today.
Click to expand...
Click to collapse
Also:
Device Model,
Firmware,
Carrier,
Location,
Errors and Exceptions,
Custom 'Events'.

Omg man i just noticed the same thing and was about to post!! I have no idea what app it is though because I don't have locale installed

It could be inside any app you have. Flurry is a company that collect statistics on app usage afaik and developers add the library to their apps. Don't know how widespread it is for developers to do this though.

SBS_ said:
It could be inside any app you have. Flurry is a company that collect statistics on app usage afaik and developers add the library to their apps. Don't know how widespread it is for developers to do this though.
Click to expand...
Click to collapse
Yes I figured that out and even downloaded the sdk.
Found out that BetterTermEmulator pro uses this and sends an error report whenever it crashes.
Code:
I/BetterTermEmulator( 3440): Command: '/system/bin/sh logcat'
I/BetterTermEmulator( 3440): chdir() to '/'
I/BetterTermEmulator( 3440): title is: 'BTEP'
I/BetterTermEmulator( 3440): Starting subprocess '/system/bin/sh logcat null'
I/BetterTermEmulator( 3440): waiting for: 463
D/FlurryAgent( 3440): Starting new session
D/NetworkLocationProvider( 141): addListener(): com.magicandroidapps.bettertermpro
D/NetworkLocationProvider( 141): setMinTime: 0
D/WifiService( 141): acquireWifiLockLocked: WifiLock{NetworkLocationProvider type=2 [email protected]}
D/FlurryAgent( 3440): Sending report to: http://data.flurry.com/aar.do
I/BetterTermEmulator( 3440): Subprocess exited: 2
I/NotificationService( 141): enqueueToast pkg=com.magicandroidapps.bettertermpro [email protected] duration=0
I/BetterTermEmulator( 3440): Subprocesses exited with code 2
E/BetterTermEmulator( 3440): onSizeChanged: W:480 H:762old W:0H:0
D/FlurryAgent( 3440): Ending session
D/LocationManager( 3440): removeUpdates: listener = [email protected]
D/NetworkLocationProvider( 141): removeListener(): com.magicandroidapps.bettertermpro

I use the custom hosts file found over in android app, gonna have to open that up and addd them in if its not already there.

I just noticed this too while working with the Eclipse IDE DDMS and logcat views. Edited my /etc/hosts as well.

for info: the AdFree application is adding these lines to the hosts file

Related

[Q] Feint?

Has anybody gotten Feint to load properly? All I get is endless "loading Feint" and I have to press the Back button to get to the game.
Came here to post this - works sometimes, not others. If no one has done so yet, I'll try getting a log cat later to see if I can figure out why, but it's probably a missing part of the OS.
I've actually engaged OpenFeint themselves through their support and they've been as helpful as they can be considering it isn't an officially supported device. Here's what I got.
My LogCat is attached which they requested and actually looked at.
Here's what the thread looks like.
Is there any chance you could tell me what other resources feint depends on? I know you can call resources from other apps so feint must require something that isn't available on the Nook Color's version of Android.
Feb-04 2011 13:08
Erwin
OpenFeint
Hi,
Feint depends web-related components such as webView and Apache...so if the Nook version doesn't have it it will error out.
-Erwin
Regards,
Erwin
Feb-04 2011 16:22
Tekchip
Odd, I know the NC has a Browser.apk installed. It's not clear if it's the original or not so that shouldn't be the problem. I don't recall seeing an org.apache.http but it must have one as the Android docs http://developer.android.com/reference/org/apache/http/package-descr.html indicate it's necessary for http communication to happen at all. Ideas? Is there anything I can run/do to gather more information about the problem?
Feb-04 2011 16:32
Tekchip
I see webView is a default function with in Android so if it's running android, and has a browser it should have webview. I imagine the hang up is on this Apache piece. Doing a quick search I found a package called org.apache.http. It appears to be a package but I don't find any apks out there. I also don't see an installed apache APK's on my phone(droid 1 running 2.3).
Feb-04 2011 16:42
Erwin
OpenFeint
Hi,
We'll take a look to see how it works but we currently don't support the device so there are no guarantees. Let me know if you need help with anything else.
-Erwin
Regards,
Erwin
Feb-04 2011 17:21
Erwin
OpenFeint
Can you connect it to a computer with the Android dev tools installed, run the Feint Game Spotlight app up until it hangs, and run adb logcat on a connected computer and send the output?
Regards,
Erwin
Feb-05 2011 07:49
Tekchip
I do have adb access to do that however I am out of town with nothing but my mobile available so I won't be able to get that info for you until 7 Feb.
Feb-05 2011 12:59
Tekchip
Here is the log cat from running Feint Game Spotlight. I captured this using a logcat app that has some settings to get more fine grained information so hopefully it didn't exclude anything important. I couldn't get it to replicate but earlier on I saw an error that indicated a cache directory could not be created. From there on it throws this set of errors that appear is if it's simply timing out. I'm going to try to re-create the original logcat entry I saw that in.
W/InputManagerService( 836): Window already focused, ignoring focus gain of: [email protected]
I/ActivityManager( 836): Starting activity: Intent { act=com.encore.intent.action.jump flg=0x14400000 cmp=com.bn.nook.applauncher/.jump.JumpActivity }
V/alogcat ( 8979): save instance
V/alogcat ( 8979): paused
D/DeviceManagerBroadcastReceiver( 1070): action (com.bn.devicemanager.ACTION_DEVICE_USAGE)
I/DeviceManagerHandler( 1070): HandleMessage(): msg.what (7)
I/ActivityManager( 836): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.aurorafeint.spotlight/.SpotlightActivity }
V/WebUI ( 7963): --- WebUI Bootup ---
V/WebUI ( 7963): Loading URL: file:///data/data/com.aurorafeint.spotlight/files/webui/index.html
W/InputManagerService( 836): Starting input on non-focused client [email protected] (uid=10002 pid=1398)
I/ActivityManager( 836): Displayed activity com.aurorafeint.spotlight/.SpotlightActivity: 1548 ms (total 3033 ms)
D/alogcat ( 8979): stopping ...
W/InputManagerService( 836): Window already focused, ignoring focus gain of: [email protected]
D/alogcat ( 8979): stopped
D/WindowManager( 836): interceptKeyTi code=4 down=true repeatCount=0 keyguardOn=false mHomePressed=false
D/WindowManager( 836): interceptKeyTi code=4 down=false repeatCount=0 keyguardOn=false mHomePressed=false
I/NotificationService( 836): enqueueToast pkg=org.jtb.alogcat [email protected] duration=1
D/alogcat ( 8979): stopping ...
D/alogcat ( 8979): starting ...
D/alogcat ( 8979): canceling periodic saves
V/alogcat ( 8979): started
V/alogcat ( 8979): resumed
D/dalvikvm( 8979): GC freed 2923 objects / 399720 bytes in 131ms
D/webviewglue( 7963): nativeDestroy view: 0x422cd0
D/dalvikvm( 7963): GC freed 4907 objects / 509912 bytes in 100ms
D/dalvikvm( 1398): GC freed 920 objects / 65960 bytes in 144ms
D/WifiService( 836): ACTION_BATTERY_CHANGED pluggedType: 0
D/DeviceManagerBroadcastReceiver( 1070): action (android.intent.action.BATTERY_CHANGED)
D/twcCurrentConditions( 1249): updateLoc:52002
D/twcCurrentConditions( 1249): no need to pull any data:52002
D/WifiService( 836): ACTION_BATTERY_CHANGED pluggedType: 0
D/DeviceManagerBroadcastReceiver( 1070): action (android.intent.action.BATTERY_CHANGED)
D/WindowManager( 836): interceptKeyTi code=82 down=true repeatCount=0 keyguardOn=false mHomePressed=false
D/WindowManager( 836): interceptKeyTi code=82 down=false repeatCount=0 keyguardOn=false mHomePressed=false
Feb-09 2011 08:27
Erwin
OpenFeint
Hi,
We couldn't find anything obvious from the log output so we'll need to get our hands on a device to check it out. Thanks for the info!
Regards,
Erwin
Feb-09 2011 10:26
Tekchip
Erwin,
I don't think the logcat app I used had the right filtering. I'm going to try to get it hooked up to my PC with real ADB access and do a raw logcat. Been busy lately so I had to try to use the shortcut method to get some output. I'll drop the info as soon as I get it. I appreciate your patience in working with me!
Brock
Feb-09 2011 10:45
Tekchip
Got it! This shows everything and it appears to be obvious where the problems are. I can't decipher it my self but some things are not able to be loaded etc. and it can't seem to locate the sdcard. I hope this helps!
logcat.txt
Feb-09 2011 13:38
Erwin
OpenFeint
Here's the latest on that from our Android guru:
So, the 'unable to access /sdcard' is actually expected, and doesn't indicate a problem...
However, the "unable to create webviewCache directory" is something I haven't seen before. That error message is actually coming from Android OS instead of our code. I've googled around a bit and it looks like this seems to happen on some rooted devices when they open the Browser. Most of the hits I'm finding are from the HTC Desire. Here is a quote from the only person I can find who seems to have fixed it:
"EDIT: Update - now fixed after repairing ext filesystem on the sdcard and repairing uid permissions from the receovery partition."
Hope that helps
Regards,
Erwin
Feb-09 2011 14:06
Erwin
OpenFeint
Google: 'fix apk uid permissions' in amonra recovery
That might help/might not...but keep in mind we can't officially support
Regards,
Erwin
Feb-09 2011 14:19
It looks like the red highlighted text is the fix. I haven't had a chance to try it using Amonra's recovery. I did try a fix permissions from clockwork but to no avail.
So has anyone had any luck with this or is feint working for most people with 1.1.0 stock rooted?
I have't tried logcat yet, but I did try CWM's permission fix, but still no go.

Getting dropsync to work

I know quite a few users round here use Dropsync. Did you do something special to get it to work?
I've definitely got a working wireless connection, have got my account connected correctly (can find the folder to sync with), but when I hit "sync now" it spins for less than a second and then drops back to status: IDLE. With nothing having updated.
I've made all the settings as unrestrictive as possible (I think) and my battery is 90%.
I use this app fine on my phone, so I can't think what's wrong with it.
I've tried using something else -- "Real sync" -- but that is terrible. Can't do version control properly and creates a huge number of conflicts (including directories that are in fact identical).
If I can't get anywhere with Dropsync, does anyone have recommendations for what works on the Nook: Wuala, Ubuntu One, or anything else (must have linux client)? [Ubuntu One also used to create masses of conflicts back in the day, but I'm hoping that is fixed now]
Fixed: device was full
If anyone else has this problem, have sense to check "Sync History". And if it says "your device storage is almost full" then maybe you should delete something and try again.
I would mark this thread as "solved" but apparently that's something else I'm too stupid to do.
Next problem: how to get the phone to accept the 32gb sd card without crashing, so that the nook can have the phone's 16gb sd card.... (there have been many attempts at this game already).
How about a fix for a device which is not full?
My entire sync history states: "autosync started... sync interrupted... autosync started... sync interrupted..."
I have discovered another error source:
I had the problem that Dropsync would start syncing, but somehow never complete the sync and would say something like "Conditions for autosync not met."
I discovered the reason was that in the settings there was the setting to sync only if battery is more than 80% full (I think that is the default setting). It would happen that the sync would "wear" out the battery enough to drop below 80, and then the sync would stop.
This way I only got working sync while charging. It took me a while to see that pattern, so maybe this note can help some other people.
trebuchet76 said:
How about a fix for a device which is not full?
My entire sync history states: "autosync started... sync interrupted... autosync started... sync interrupted..."
Click to expand...
Click to collapse
I got the same thing the fixed it with uninstall and clean the app data then reinstall it.
tuangd said:
I got the same thing the fixed it with uninstall and clean the app data then reinstall it.
Click to expand...
Click to collapse
After that app works properly, without issues?
Try Dropsync 1.68 instead of newest version
tl;dr: Try dropsync pro 1.68 apk
So I've done a lot of troubleshooting this app over the last couple weeks since I flattened and re-rooted my NST. I as well was getting tons of "sync interrupted" and the sync just going to IDLE state shortly after starting a manual sync (mind you this is without Autosync even being in play). I would run the manual sync over and over and maybe get three or four files to download before it crapped out.
This was frustrating to me since I had this app working PERFECTLY for the last year and a half before re-rooting.
So.... in an act of desperation I tried out an old version of Dropsync that seemed to be from about the time that I had rooted and installed before. In this case I tried the 1.68 APK which was one of the last ones before he jumped up to 2.x version numbers.
In the first couple of days since installing this version it seems to be rock solid again. I don't need any of the additional features - just downloading my Calibre files on demand when I need them.
Do a web search for 1.68 or another version and sideload it to see if it helps out.
For reference, here is the main excpetion I was getting in the log file (when I could get the damn log file to show up)
[2013-07-16 09:45:38-0500] [3874] [W] Exception
c.t.ds.ap: java.io.IOException: SSL handshake failure: Failure in SSL library, usually a protocol error
error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number (external/openssl/ssl/s3_pkt.c:284 0xaf58a08b:0x00000000)
Similar probs, using Dropsync Free
I'm experiencing the same problem with my NST. I even contacted the software's author. He looked at the log and advised that the problem was with dropped connection. Given that the problem exists on all three connections I have tried (work, home and using my phone as WiFi relay), I was inclined to think that the problem lay with the device's wifi, maybe dropping packets and making dropsync think that there's no connection. Does anyone know how to do a ping from this device?
Since NST's in the UK were on an amazing special offer of £30 (around $48), I bought a spare, and I have the same issues on that!
Someone here suggested uninstalling, clearing the app's data and reinstalling -- what data do you suggest I remove? I use Relaunch as a file browser, have searched for anything with dropsync. It came up with two files (I forget the locations) and one of them, was the log file that is only generated if selected in the app's menu...
Will report back if un-re works.
---------- Post added at 11:26 PM ---------- Previous post was at 10:51 PM ----------
Uninstall reinstall, no different.
Changed folders I was syncing to include only two new files, to a new location on the Nook. Attempted to sync the approx 2MB. Synced fine!! Changed settings back to the folders I was trying to sync, a total of 471 files in 170 folders. Ran for 93 seconds while it analysed I estimate about 80% of my folders, then threw the towel in without getting to the one new file I wanted it to sync.
Conclusion -- the device's WiFi is a bit intermittent or the software is flakey on this device (suspect the latter).
Might invite the author to check this post.
Pertinent part of the log file (I suspect)
java.io.IOException: SSL handshake failure: Failure in SSL library, usually a protocol error
error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number (external/openssl/ssl/s3_pkt.c:284 0xaf58a08b:0x00000000)
at c.t.ds.ad.a(SourceFile:653)
at c.t.ds.ad.a(SourceFile:145)
at c.t.ds.an.a(SourceFile:69)
at c.t.ds.an.b(SourceFile:64)
at com.ttxapps.dropsync.m.a(SourceFile:1354)
at com.ttxapps.dropsync.m.b(SourceFile:1259)
at com.ttxapps.dropsync.m.b(SourceFile:115)
at com.ttxapps.dropsync.m.b(SourceFile:175)
at com.ttxapps.dropsync.m.b(SourceFile:175)
at com.ttxapps.dropsync.m.b(SourceFile:175)
at com.ttxapps.dropsync.m.a(SourceFile:73)
at com.ttxapps.dropsync.SyncService.a(SourceFile:383)
at com.ttxapps.dropsync.SyncService.onHandleIntent(SourceFile:152)
at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:30)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.os.HandlerThread.run(HandlerThread.java:60)
Caused by: java.io.IOException: SSL handshake failure: Failure in SSL library, usually a protocol error
error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number (external/openssl/ssl/s3_pkt.c:284 0xaf58a08b:0x00000000)
at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.nativeconnect(Native Method)
at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:305)
at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:92)
at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:321)
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:129)
at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:348)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
at c.t.ds.ad.a(SourceFile:563)
at c.t.ds.ad.a(SourceFile:651)
... 16 more
[2013-09-16 00:15:03+0100] [1906] (90186 ms) Processed /sdcard/My Files <=> /Nook
[2013-09-16 00:15:03+0100] [1906] Closing /sdcard/My Files/.dropsync
[2013-09-16 00:15:03+0100] [1906] [D] File CLOSE_WRITE(0x8) /sdcard/My Files/.dropsync
[2013-09-16 00:15:03+0100] [1906] [W] Sync failed with exception:
c.t.ds.ap: java.io.IOException: SSL handshake failure: Failure in SSL library, usually a protocol error
error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number (external/openssl/ssl/s3_pkt.c:284 0xaf58a08b:0x00000000)
at c.t.ds.ad.a(SourceFile:653)
at c.t.ds.ad.a(SourceFile:145)
at c.t.ds.an.a(SourceFile:69)
at c.t.ds.an.b(SourceFile:64)
at com.ttxapps.dropsync.m.a(SourceFile:1354)
at com.ttxapps.dropsync.m.b(SourceFile:1259)
at com.ttxapps.dropsync.m.b(SourceFile:115)
at com.ttxapps.dropsync.m.b(SourceFile:175)
at com.ttxapps.dropsync.m.b(SourceFile:175)
at com.ttxapps.dropsync.m.b(SourceFile:175)
at com.ttxapps.dropsync.m.a(SourceFile:73)
at com.ttxapps.dropsync.SyncService.a(SourceFile:383)
at com.ttxapps.dropsync.SyncService.onHandleIntent(SourceFile:152)
at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:30)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.os.HandlerThread.run(HandlerThread.java:60)
Caused by: java.io.IOException: SSL handshake failure: Failure in SSL library, usually a protocol error
error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number (external/openssl/ssl/s3_pkt.c:284 0xaf58a08b:0x00000000)
at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.nativeconnect(Native Method)
at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:305)
at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:92)
at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:321)
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:129)
at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:348)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
at c.t.ds.ad.a(SourceFile:563)
at c.t.ds.ad.a(SourceFile:651)
... 16 more
[2013-09-16 00:15:03+0100] [1906] Sync finished in 93 seconds
[2013-09-16 00:15:03+0100] [1906] 0 change(s) detected and synced
[2013-09-16 00:15:03+0100] [1906] [V] (10) INSERT 2013-09-16 00:15:03 Sync interrupted
[2013-09-16 00:15:03+0100] [1906] --- Sync failed, duration 93 seconds
[2013-09-16 00:15:03+0100] [1906]

[Q] How to change carrier text on demand

Hello,
I'm trying to develop an Xposed module that will allow me to change the carrier text of the device on demand (in reality, this will happen when the music track is changed).
I'm already using a BroadcastReceiver to listen to track-changed events from various media players, but I want to change the carrier text of the device when I receive such an intent.
However, I wasn't able to find how to do it using Xposed, as it only allows me to hook methods before/after they execute (feel free to correct me if I'm wrong of course), which isn't exactly what I need.
I went through the source code of XBlastTools for changing the carrier text, but wasn't able to conclude much for my needs.
Please advise in setting up a method that will basically get a String and replace the carrier text with that given String (at any given time). Something like this:
Code:
public void setName(String name) {
// TODO implement
}
Normally, you'd put your BroadcastReceiver somewhere you can access the carrier TextView from. You'd then be able to edit it when you want normally. In this case it looks like there's an easier way, though.
Here's how I'd do it: register a BroadcastReceiver in CarrierText's constructor. In that receiver, get and save the text you want as a class variable. Then hook getCarrierTextForSimState and make it return that variable.
http://grepcode.com/file_/repositor...licy/impl/keyguard/CarrierText.java/?v=source
GermainZ said:
Normally, you'd put your BroadcastReceiver somewhere you can access the carrier TextView from. You'd then be able to edit it when you want normally. In this case it looks like there's an easier way, though.
Here's how I'd do it: register a BroadcastReceiver in CarrierText's constructor. In that receiver, get and save the text you want as a class variable. Then hook getCarrierTextForSimState and make it return that variable.
http://grepcode.com/file_/repositor...licy/impl/keyguard/CarrierText.java/?v=source
Click to expand...
Click to collapse
That's a good way of doing things if it weren't for the "on demand" requirement.
Basically, what I want to do is set the carrier text to a different one whenever the onReceive() of the BroadcastReceiver is called, so I can't just hook into getCarrierTextForSimState() and change that, because it probably won't be called whenever I need.
benthe said:
That's a good way of doing things if it weren't for the "on demand" requirement.
Basically, what I want to do is set the carrier text to a different one whenever the onReceive() of the BroadcastReceiver is called, so I can't just hook into getCarrierTextForSimState() and change that, because it probably won't be called whenever I need.
Click to expand...
Click to collapse
Then call the setText method from your receiver as well.
GermainZ said:
Then call the setText method from your receiver as well.
Click to expand...
Click to collapse
By the way, I think the class you linked to only affects the carrier name that appears on the lockscreen.
I'm not that interested in this carrier text to be honest, and basically want to set the carrier text whereever it may be the class you linked to is pulling it from.
The main idea behind my module is that I have a BT headset in my car that can only display the carrier name & bluetooth name of my phone, but I want it to display the currently playing track. So I want to change the bluetooth name of the phone to the artist of the currently playing song (almost works at this point, just have some crashes I need to deal with), and set the carrier name to the name of the song that's currently playing.
However, I didn't manage to do that later. I tried various methods, but no luck so far.
EDIT: I managed to get everything working for the most part (I didn't test it with the actual BT headset, but both the BT and carrier names change when changing tracks).
However, I'm getting 2 error messages constantly as soon as I start playback:
1. Unfortunately, the process android.process.acore has stopped.
2. Unfortunately, the process android.process.media has stopped.
Any ideas on how to fix those two? What's causing them seems to be the changing of the bluetooth name (although it does work, just shows me those two crash errors time after time). Here's the code for my bluetooth manager.
Disabling the "setName" call of the BluetoothAdapter fixes the crashes (but obviously doesn't change the BT name of the device, which defeats the purpose).
Also, replacing the said call with:
Code:
XposedHelpers.callMethod(mLocalAdapter, "setName", name);
fixes this, but I prefer to do things without using reflection and hooking if I can (which is possible in this case), so it seems like it's just a permission issue.
It might be because of a permission problem:
I put together a quick Android app to simulate changing the BT name in the same way, and it crashed without adding:
Code:
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
to the manifest file.
However, if I recall correctly, Xposed modules run in root mode, so they shouldn't need permissions to do whatever they please. Also, I tried adding the above permissions to my module, but it still crashes.
Any help on the matter would be most appreciated.
I just checked which class XBlastTools hooked and assumed that's it. If not, look for the right one or see the first part of post #2.
About the crashes: check your logcat.
Xposed modules do not run as root, they'll have the same permissions as the process they're in (the app you're hooking). You can hook anything, though (including Android system methods).
GermainZ said:
I just checked which class XBlastTools hooked and assumed that's it. If not, look for the right one or see the first part of post #2.
About the crashes: check your logcat.
Xposed modules do not run as root, they'll have the same permissions as the process they're in (the app you're hooking). You can hook anything, though (including Android system methods).
Click to expand...
Click to collapse
Thanks for the help.
I got the carrier name part working perfectly now (or so it seems at least, I'll have to check later in the actual car BT headset).
The only part that remains to make the module fully functional is the Bluetooth one. I checked my logcat, and like I said in my previous post - I think it's a permission issue, which is rather weird - as I set both permissions needed for Bluetooth for the module. Keep in mind that the part that's running the bluetooth code in the app isn't hooking anything, it runs on the module itself as far as I can tell. I'm calling it on the onReceive callback from the BroadcastReceiver (I don't think the app that send the broadcast has bluetooth permissions, but that shouldn't matter, should it?).
benthe said:
Thanks for the help.
I got the carrier name part working perfectly now (or so it seems at least, I'll have to check later in the actual car BT headset).
The only part that remains to make the module fully functional is the Bluetooth one. I checked my logcat, and like I said in my previous post - I think it's a permission issue, which is rather weird - as I set both permissions needed for Bluetooth for the module. Keep in mind that the part that's running the bluetooth code in the app isn't hooking anything, it runs on the module itself as far as I can tell. I'm calling it on the onReceive callback from the BroadcastReceiver (I don't think the app that send the broadcast has bluetooth permissions, but that shouldn't matter, should it?).
Click to expand...
Click to collapse
Remember that all hooked code does *not* run as your app so your app's permissions don't matter here. Hooked code runs as if it was in the hooked process.
Can't say much else without the actual error.
GermainZ said:
Remember that all hooked code does *not* run as your app so your app's permissions don't matter here. Hooked code runs as if it was in the hooked process.
Can't say much else without the actual error.
Click to expand...
Click to collapse
But this code does run on the module.
In my main class (that implements IXposedHookLoadPackage), I'm initializing a class (that derives from Object, and doesn't implement any interfaces), in which I register the BroadcastReceiver (on the context of the application, via AndroidAppHelper.currentApplication().getApplicationContext()), when the onReceive() method is called in the BroadcastReceiver I call the setName() method of the BluetoothAdapter.
If it doesn't run on the module application, on what application does it run on?
And here's the error:
E/AndroidRuntime( 5063): FATAL EXCEPTION: main
E/AndroidRuntime( 5063): Process: com.maxmpz.audioplayer, PID: 5063
E/AndroidRuntime( 5063): java.lang.RuntimeException: Error receiving broadcast Intent { act=com.maxmpz.audioplayer.TRACK_CHANGED flg=0x10 (has extras) } in com.bengr.MusicMetadataForLegacyDevices.Musi
[email protected]
E/AndroidRuntime( 5063): at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:785)
E/AndroidRuntime( 5063): at android.os.Handler.handleCallback(Handler.java:733)
E/AndroidRuntime( 5063): at android.os.Handler.dispatchMessage(Handler.java:95)
E/AndroidRuntime( 5063): at android.os.Looper.loop(Looper.java:136)
E/AndroidRuntime( 5063): at android.app.ActivityThread.main(ActivityThread.java:5144)
E/AndroidRuntime( 5063): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 5063): at java.lang.reflect.Method.invoke(Method.java:515)
E/AndroidRuntime( 5063): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)
E/AndroidRuntime( 5063): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:611)
E/AndroidRuntime( 5063): at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:132)
E/AndroidRuntime( 5063): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime( 5063): Caused by: java.lang.SecurityException: Need BLUETOOTH ADMIN permission: Neither user 10128 nor current process has android.permission.BLUETOOTH_ADMIN.
E/AndroidRuntime( 5063): at android.os.Parcel.readException(Parcel.java:1465)
E/AndroidRuntime( 5063): at android.os.Parcel.readException(Parcel.java:1419)
E/AndroidRuntime( 5063): at android.bluetooth.IBluetooth$Stub$Proxy.setName(IBluetooth.java:783)
E/AndroidRuntime( 5063): at android.bluetooth.BluetoothAdapter.setName(BluetoothAdapter.java:660)
E/AndroidRuntime( 5063): at com.bengr.MusicMetadataForLegacyDevices.BluetoothManager.setName(BluetoothManager.java:50)
E/AndroidRuntime( 5063): at com.bengr.MusicMetadataForLegacyDevices.MusicListener.updateRemoteFieldsFromLocalFields(MusicListener.java:150)
E/AndroidRuntime( 5063): at com.bengr.MusicMetadataForLegacyDevices.MusicListener.setTrackMetadata(MusicListener.java:144)
E/AndroidRuntime( 5063): at com.bengr.MusicMetadataForLegacyDevices.MusicListener.access$4(MusicListener.java:138)
E/AndroidRuntime( 5063): at com.bengr.MusicMetadataForLegacyDevices.MusicListener$1.onReceive(MusicListener.java:105)
E/AndroidRuntime( 5063): at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:775)
E/AndroidRuntime( 5063): ... 10 more
W/ActivityManager( 935): Force finishing activity com.maxmpz.audioplayer/.PlayerUIActivity
W/ActivityManager( 935): Force finishing activity com.maxmpz.audioplayer/.PlayListActivity
D/LogFetchServiceManager( 6618): Received entry added
W/ActivityManager( 935): Activity pause timeout for ActivityRecord{42d72640 u0 com.maxmpz.audioplayer/.PlayerUIActivity t4 f}
I/Timeline( 1490): Timeline: Activity_idle id: [email protected] time:183794
I/Timeline( 935): Timeline: Activity_windows_visible id: ActivityRecord{42ca81c8 u0 com.teslacoilsw.launcher/com.android.launcher2.Launcher t1} time:184001
W/System.err( 5009): LOG: Warning Unknown dock level ignored.
Click to expand...
Click to collapse
Also, here's the project (together with the PowerAMP API project, as it depends on it, and the Android tester application I made to simulate changing the bluetooth name on a "regular" project): link, if that's of any help.
I can't check the project right now, but just to make sure I understand correctly, you're doing something like this:
1- You're hooking the class in which the carrier text is set and registering a BroadcastReceiver there.
2- From your app, you're sending a broadcast whenever you want (possibly with the text you want in the extras).
3- In the BroadcastReceiver's onReceive method, you're setting the carrier text to the value you just received.
If that's what you're doing, it seems fine to me. For the permissions issue, I suppose adding the required permission to your manifest will fix that.
GermainZ said:
I can't check the project right now, but just to make sure I understand correctly, you're doing something like this:
1- You're hooking the class in which the carrier text is set and registering a BroadcastReceiver there.
2- From your app, you're sending a broadcast whenever you want (possibly with the text you want in the extras).
3- In the BroadcastReceiver's onReceive method, you're setting the carrier text to the value you just received.
If that's what you're doing, it seems fine to me. For the permissions issue, I suppose adding the required permission to your manifest will fix that.
Click to expand...
Click to collapse
Not really. The carrier text has nothing to do with the issue anymore. Even if I removed all the code that has to do with the carrier text, and left the bluetooth part alone - the issue would persist.
What I'm doing is this:
1- Have a regular class (meaning it derives from Object directly, and doesn't implement any interfaces).
2- In the said class I set up a BroadcastReceiver (using the application context, which I got via AndroidAppHelper.currentApplication().getApplicationContext(), which is static and can be called from anywhere).
3- When the BroadcastReceiver's onReceive() is called (again, in the previously mentioned class), I call BluetoothAdapter.getDefaultAdapter().setText with the text I want to set as the phone's BT name.
4- Error messages pop-up, and the error I attached in my previous reply shows up on the logcat. (this step occurs when the onReceive is called, which calls the setText).
When I comment out the setText() call, no errors occur (but the BT name doesn't change, obviously).
It's important to note that I did add the needed permissions to my manifest:
AndroidManifest.xml:
Code:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.bengr.musicmetadateforlegacydevices"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="16"
android:targetSdkVersion="19" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<meta-data android:name="xposedmodule" android:value="true"/>
<meta-data android:name="xposedminversion" android:value="50"/>
<meta-data android:name="xposeddescription" android:value="Changes the device's carrier and bluetooth names to display the currently playing track."/>
</application>
</manifest>
So you're not using Xposed for anything anymore? Sorry but I'm a bit confused now.
GermainZ said:
So you're not using Xposed for anything anymore? Sorry but I'm a bit confused now.
Click to expand...
Click to collapse
For what I'm doing right now? Not really.
My module is composed of two parts - one for changing the BT name (which doesn't require private calls, and can be done via Android's public API), and one for changing the carrier name (which does require Xposed, as I'm doing some private calls etc).
The carrier name part of the module works perfectly right now.
However, the Bluetooth one doesn't; and crashes as mentioned before, and throws a permission error. However, on a side-project that's just a regular Android app, that also changes the BT name this works (keep in mind that in both the side-project and the Xposed module project I added both Android bluetooth permissions).

[PROBLEM] Server classes and resource hooks

com.android.server.*
I know that these classes have to be hooked in handleLoadPackage for lpparam.packageName == "android", but sometimes there are several processes ("system:ui" for example) that contain this package and hooks fail even from handleLoadPackage.
Now I'm using this code, is it correct?
Code:
if (lpparam.packageName.equals("android") && lpparam.processName.equals("android")) { ... }
Resource hooks
They are just not working. Well, most of them. Using fwd or DrawableLoader doesn't matter. No errors shown in log. It's not just a problem with some packages. Status bar icons, action bar icons, etc, etc - I can't replace 90% of them, exact same hooks were working on Kit Kat.
For example, png drawable is used only in manifest and in actionbar ( actionbar.setIcon(iconResId) ). With a hook this icon is replaced in launcher, but not in actionbar.
Code:
Starting Xposed binary version 60, compiled for SDK 21
Phone: HTC One (HTC), Android version 5.0.2 (SDK 21)
ROM: LRX22G release-keys
Build fingerprint: htc/htc_europe/m7:5.0.2/LRX22G/482424.2:user/release-keys
Platform: armeabi-v7a, 32-bit binary, system server: yes
SELinux enabled: yes, enforcing: no
Mikanoshi said:
Resource hooks
They are just not working. Well, most of them. Using fwd or DrawableLoader doesn't matter. No errors shown in log. It's not just a problem with some packages. Status bar icons, action bar icons, etc, etc - I can't replace 90% of them, exact same hooks were working on Kit Kat.
For example, png drawable is used only in manifest and in actionbar ( actionbar.setIcon(iconResId) ). With a hook this icon is replaced in launcher, but not in actionbar.
Click to expand...
Click to collapse
Noticed that as well. Some resources can be replaced, others it's like they're just silently ignored. I'm guessing maybe the ART optimizations are the culprit?
There's a thread about it here. I'm sure @rovo89 will chime in when he's had time to take a look. As a workaround, you could always find the method that's setting the original drawable and replace it there; that seems to work for me in most cases.
Mikanoshi said:
com.android.server.*
I know that these classes have to be hooked in handleLoadPackage for lpparam.packageName == "android", but sometimes there are several processes ("system:ui" for example) that contain this package and hooks fail even from handleLoadPackage.
Now I'm using this code, is it correct?
Code:
if (lpparam.packageName.equals("android") && lpparam.processName.equals("android")) { ... }
Click to expand...
Click to collapse
So you're saying that there are situations with lpparam.packageName == "android" and lpparam.processName <> "android"? That would explain a couple of other issues. If you could find out a good way to reproduce this, it could be quite helpful.
Depending on the situation, I will have to see how to handle it. Checking for package name "android" is a pretty common pattern to ensure you're in the system server (which I even recommend myself!), so ideally it should stay correct even without the additional checks you suggested.
rovo89 said:
So you're saying that there are situations with lpparam.packageName == "android" and lpparam.processName <> "android"? That would explain a couple of other issues. If you could find out a good way to reproduce this, it could be quite helpful.
Depending on the situation, I will have to see how to handle it. Checking for package name "android" is a pretty common pattern to ensure you're in the system server (which I even recommend myself!), so ideally it should stay correct even without the additional checks you suggested.
Click to expand...
Click to collapse
I've seen only "system:ui" process name, it tries to search for classes in XposedBridge.jar only and of course fails.
Occurrences are very inconsistent, I install modules from Eclipse and then soft reboot like 50 times a day, and this bug happens 2 or 3 times. Not a big problem though, it just clutters Xposed log
I also have a lot of problems with installing apk via adb, it either throws an excpetion and doesn't install
Code:
ActivityManager: java.lang.UnsatisfiedLinkError: No implementation found for java.lang.String android.os.SystemProperties.native_get(java.lang.String) (tried Java_android_os_SystemProperties_native_1get and Java_android_os_SystemProperties_native_1get__Ljava_lang_String_2)
ActivityManager: at android.os.SystemProperties.native_get(Native Method)
ActivityManager: at android.os.SystemProperties.get(SystemProperties.java:52)
ActivityManager: at com.htc.customization.HtcCustomizationManager.<init>(HtcCustomizationManager.java:65)
ActivityManager: at com.htc.customization.HtcCustomizationManager.<clinit>(HtcCustomizationManager.java:60)
ActivityManager: at android.os.Environment$UserEnvironment.getCustomizationReader(Environment.java:523)
ActivityManager: at android.os.Environment$UserEnvironment.isDynamicSwitchSupported(Environment.java:534)
ActivityManager: at android.os.Environment$UserEnvironment.<init>(Environment.java:222)
ActivityManager: at android.os.Environment.initForCurrentUser(Environment.java:142)
ActivityManager: at android.os.Environment.<clinit>(Environment.java:136)
ActivityManager: at android.os.Environment.getLegacyExternalStorageDirectory(Environment.java:726)
ActivityManager: at android.os.Debug.<clinit>(Debug.java:96)
ActivityManager: at android.ddm.DdmHandleHello.handleHELO(DdmHandleHello.java:164)
ActivityManager: at android.ddm.DdmHandleHello.handleChunk(DdmHandleHello.java:91)
ActivityManager: at org.apache.harmony.dalvik.ddmc.DdmServer.dispatch(DdmServer.java:171)
ActivityManager: java.lang.UnsatisfiedLinkError: android.os.Debug
ActivityManager: at android.ddm.DdmHandleHello.handleFEAT(DdmHandleHello.java:176)
ActivityManager: at android.ddm.DdmHandleHello.handleChunk(DdmHandleHello.java:93)
ActivityManager: at org.apache.harmony.dalvik.ddmc.DdmServer.dispatch(DdmServer.java:171)
ActivityManager: java.lang.UnsatisfiedLinkError: android.os.Debug
ActivityManager: at android.ddm.DdmHandleProfiling.handleMPRQ(DdmHandleProfiling.java:215)
ActivityManager: at android.ddm.DdmHandleProfiling.handleChunk(DdmHandleProfiling.java:106)
ActivityManager: at org.apache.harmony.dalvik.ddmc.DdmServer.dispatch(DdmServer.java:171)
or installs but fails to launch until (soft) reboot:
Code:
I/ActivityManager(15637): Process name.mikanoshi.icecontrol (pid 27200) has died
I/ActivityManager(15637): Start proc name.mikanoshi.icecontrol for activity name.mikanoshi.icecontrol/.Settings: pid=27233 uid=10343 gids={50343, 9997} abi=armeabi-v7a
I/art(27233): Late-enabling -Xcheck:jni
W/art(27233): Failed to find OatDexFile for DexFile /data/app/name.mikanoshi.icecontrol-2/base.apk ( canonical path /data/app/name.mikanoshi.icecontrol-2/base.apk) with checksum 0x7991961b in OatFile /data/dalvik-cache/arm/[email protected]@[email protected]@classes.dex
D/Process(15637): killProcessQuiet, pid=27233
No idea if Lollipop or Xposed problem
rovo89 said:
So you're saying that there are situations with lpparam.packageName == "android" and lpparam.processName <> "android"? That would explain a couple of other issues. If you could find out a good way to reproduce this, it could be quite helpful.
Depending on the situation, I will have to see how to handle it. Checking for package name "android" is a pretty common pattern to ensure you're in the system server (which I even recommend myself!), so ideally it should stay correct even without the additional checks you suggested.
Click to expand...
Click to collapse
Yes, I can confirm this seems to be the case. Haven't got a chance to debug which process comes with packageName == "android" apart from "android" process itself, but when that happens, classLoader cannot find classes that are typically available within "android" package, which is logical. The other process that has packageName "android" is something else with no access to those classes.
Oh, and rarely soft reboot after module activation ends like this
Code:
E/Xposed(10834): Error -32 while adding app service user.xposed.app
E/Xposed(10822): Zygote service is not running, Xposed cannot work without it
I would like to concentrate on the bigger issues first. Yours can probably be solved by another reboot.
So after some research, grepping the AOSP code and so on, it seems that the "system:ui" process is only used by the PackageManagerService. Maybe more will follow in the future. For some reason, the process seems to be called "android:ui" though once it has been started. It's running with UID 1000, but in the system_app SELinux context.
I would like to understand some more things about this before making a decision. It seems that there can now indeed be processes with package name "android" that aren't the system_server. Without breaking existing modules, I think I could only block handleLoadPackage() for these. Maybe it would also make sense to add a new handleLoadSystemServer() method. That would avoid the need for checks, especially if only system services are hooked. For backward-compatiblity, handleLoadPackage() could still be called for package "android", but modules would produce error messaages if they don't check the process name. Or there could be a compatiblity break at this point, requiring all modules that hook system services to adopt the new API.
I don't mind checks Almost every module that hooks system classes requires an update for 5.0 anyway.
Huge issues for me now are broken resource hooks and problems with installing apks (sometimes it takes 3-5 tries to install and then soft reboot just to test interface changes).
Most likely, this is the reason why the ChooserActivity runs in the "android:ui" process now:
https://github.com/android/platform...40#diff-30afe08a44bf548c7cc9116a473f8bdfL2798
It used to declare multiprocess=true, which meant that the activity was started in the caller's process. Now it's started in a separate process, where ":ui" is relative to the package name, not the applications's default process name (that would be "system").
There are also other activities with similar attributes defined, even in KitKat. If someone has a bit of time at their hands, they could try to check whether handleLoadPackage() is also called for package == "android" and process != "android" on KitKat ROMs for those other activities. It wouldn't be as noticable as it is on Lollipop because the system services that most modules hook there were available with the boot class path.
Anyway, now we know that there are legitimate usages of the "android" package for other things than the system_server. These usages are very limited though. The activities use the boot classloader, so hooking methods from initZygote() would (still) work for them. What if I set the packageName for these apps to "system" instead? So modules checking for "android" as package name could be sure it's the system_server then. Modules which need to do something for the android:ui process could simply check for "system" as package name. Any complaints?
Good solution... Ship it
But I believe majority of actively developed modules are already fixed for this specific case.
rovo89 said:
Most likely, this is the reason why the ChooserActivity runs in the "android:ui" process now:
https://github.com/android/platform...40#diff-30afe08a44bf548c7cc9116a473f8bdfL2798
It used to declare multiprocess=true, which meant that the activity was started in the caller's process. Now it's started in a separate process, where ":ui" is relative to the package name, not the applications's default process name (that would be "system").
There are also other activities with similar attributes defined, even in KitKat. If someone has a bit of time at their hands, they could try to check whether handleLoadPackage() is also called for package == "android" and process != "android" on KitKat ROMs for those other activities. It wouldn't be as noticable as it is on Lollipop because the system services that most modules hook there were available with the boot class path.
Anyway, now we know that there are legitimate usages of the "android" package for other things than the system_server. These usages are very limited though. The activities use the boot classloader, so hooking methods from initZygote() would (still) work for them. What if I set the packageName for these apps to "system" instead? So modules checking for "android" as package name could be sure it's the system_server then. Modules which need to do something for the android:ui process could simply check for "system" as package name. Any complaints?
Click to expand...
Click to collapse
Great idea, no complaints here.
Whike fixing this, maybe you can try to look why appInfo is null for "android" package.
pyler said:
Whike fixing this, maybe you can try to look why appInfo is null for "android" package.
Click to expand...
Click to collapse
That's very simple to answer: https://github.com/rovo89/XposedBri...de/robv/android/xposed/XposedBridge.java#L245
There's simply no ApplicationInfo object (yet), it's constructed later when the PackageManagerService is running. I could construct a fake object, but there are hardly any fields that could be filled with proper values.
atleast flags field could be filled, or not? just do copy of real object for android, which any normal app can get.
since we talk about this, is this doable or Xposed starts too soon for these values?
rovo89 said:
What if I set the packageName for these apps to "system" instead?
Click to expand...
Click to collapse
Old modules which use "android" are incompatible...
To be compatible i have then to check "system" and "android" - this is not better than check for package& process name
system is for *:ui processes and we mostly care about android only.
pyler said:
system is for *:ui processes and we mostly care about android only.
Click to expand...
Click to collapse
Who is "we" and whats the source of "mostly"
I have to say that i'm using "android" for <21 and so it seems i have to use different package names depending on Xposed version
pyler said:
atleast flags field could be filled, or not? just do copy of real object for android, which any normal app can get.
since we talk about this, is this doable or Xposed starts too soon for these values?
Click to expand...
Click to collapse
"real object for android" => you mean the one that I said doesn't exist at the time the system_server is starting up, as the PackageManagerService is not running yet?
No idea about your other suggestion, I'm currently looking mainly into crashes etc., API extensions have to wait...
defim said:
I have to say that i'm using "android" for <21 and so it seems i have to use different package names depending on Xposed version
Click to expand...
Click to collapse
I was talking about "other things than the system_server", i.e. the process for ChooserActivity etc. This process is hardly used, I'm not even sure if it existed in previous versions. Only for this process, the package name is faked to be "system". The system_server, which is way more widely used, will keep package name "android". So I don't expect a single module to break.
If no update for older modules is needed its great :good:
can i use it on samsung device running cm 12
can i use it on samsung device running cm 12

Has anyone looked at CVE-2014-8609?

With the latest OTA we're still vulnerable to "CVE-2014-8609" or "settings pending intent"
Summary from the full disclosure:
In Android = 4.0), Settings application leaks Pendingintent with a blank base intent (neither the component nor the action is explicitly set) to third party application, bad app can use this to broadcast intent with the same permissions and identity of the Settings application, which runs as SYSTEM uid. Thus bad app can broadcast sensitive intent with the permission of SYSTEM.
Click to expand...
Click to collapse
Now just give me some time

Categories

Resources