FORUMS

[FTF] Sony Xperia Z Lollipop Release

Sony rolled out a Lollipop update for Xperia Z just yesterday. If you still haven’t gotten … more

Original Moto G Receives Lollipop, OTA Captured

The original Moto G was released almost two years ago. Motorola still continues to … more

Device Review: No.1 X1 Rugged Smartphone

We are almost at the end of Q2 for 2015, and we have seen most of the flagship phones for the … more

When a Friend or Family Member Asks for a Phone Recommendation, What Do You Tell Them?

The majority of us here at XDA would consider … more
Post Reply Subscribe to Thread Email Thread

[Xposed][MOD][1.28] AppOpsXposed - AppOps for 4.3+

11th December 2013, 11:09 AM |#1  
caspase's Avatar
OP Senior Member
Thanks Meter: 251
 
More
The version offered on Google Play is neither endorsed nor supported by me. Support requests will only be honored for versions downloaded from XDA, (my) github or the Xposed Modules Repository.

AppOpsXposed is a module for the Xposed framework that restores AppOps functionality on Android >= 4.4.2, and also adds
"App ops" in the ROM's "Settings" app for Android 4.3+. Why not just install XPrivacy? you may ask - read this post.

Source code is available on github (License: GPLv3+)

ChangeLog:

1.28 (2015-05-17)
* Fix crashes on certain HTC devices
* Fix switch labels
* Smaller icon in Settings


1.27 (2015-05-15):
* Add translations for 22 languages

1.26.1:
* Fixed issue on Sony ROMs where all ops were shown as disabled
* Restrictions can be reset under "Show changed"
* Fix crash when changing ops
* Better handling of non-AOSP ops (labels, summaries)

1.25.3:
* Multiple fixes for Lollipop

1.24:
* Add option to disable verbose logs
* Potential fix for LG icon issue
* Potential fix for Samsung GridSettings bug
* Add hack to fix ops resetting on reboot if
installed on SD.

1.23
* Finally got the HTC variant working
(thanks to @Mikanoshi)
* Fixed some system-app-install issues
* Bugfixes

1.22:
* AppOpsXposed now works without Xposed, by installing
as a system-app.
* Add new ops for Lollipop (compatibility mode)
* When enabled, use compatibility mode when launching
from settings app as well

1.21.1:
* Fix compatibility mode

1.21:
* Added new compatibility mode (BETA)
* Fix crash on LG ROMs
* Attempted to fix wrong icon size on some ROMs
* WakeLock hack disabled on JellyBean for now

1.20.2:
* Fixed version number (updates should work now)

1.20.1:
* Fixed compatibility with some LG ROMs
* Fixed WakeLockFix (JellyBean currently broken)
* Updated icon in settings for non-AOSP ROMs

1.19:
- Fixed some issues in Samsung ROMs
- Fixed issue in detection of CyanogenMod-based ROMs
- Added bug report functionality

1.18:
* Added OP_BOOT_COMPLETED hack (must be enabled manually under "Hacks")
* Added WakeLock fix (must be enabled manually under "Hacks")
* Fixed crashes in CyanogenMod-based ROMs
* Now using a dedicated icon in Settings (thanks @Kickinpigeons)
* Added Spanish translation (thanks @Jose Artuņedo)

1.17.2:
- Xperia only: more human readable info (e.g. "Run at start-up" vs "BOOT_COMPLETED")

1.17:
- Fixed compatibility with Galaxy S5 settings app (grid layout)
- Fixed crash on Xperia KitKat ROMs

1.16:
- Added OmniROM variant (no header in settings, only icon in "App info")
- Added variant for Sony KitKat ROMs with a switch in AppOps, as opposed to the drop-down menu found in 4.3 ROMs

1.15.1:
- Fix crashes on Android 4.3

1.15:
- Added module-specific settings (click module name in Xposed Installer's "Module" section)
- Launcher icon can now be hidden
- Added Korean translation by sdkoongchi@github

1.14:
- This release should fix further crashes on recent cn11 nightlies

1.13:
- Attempted to fix issues on recent cm11 nightlies - again
- Added Japanese translation (WedyDQ10@github)

1.12:
- Hopefully fixed crashes on Xperia devices
- For now, on CM11 nightlies >= 2014-01-28 almost all features are disabled. AppOps can be launched via the launcher icon only.

1.11:
- Fixed layout issue on Xperia ROMs.

1.10.2:
- Hopefully fix crash on Sony stock ROMs

1.10.1:
- On Android 4.3, AppOpsXposed now works as a launcher even if the Xposed Framework is not installed
- Fixed issue where AppOps could not be started from "App info"

1.9:
- AppOpsXposed is now compatible with Sony Xperia devices
- Fixed AppOps details layout for languages where strings were much longer than in English
- Fixed error where AppOps could not be launched from "App info"
- "App info" now uses AppOpsXposed's icon instead of text
- Better detection of Stock vs. AOSP ROMs
- Added 63 translations of "App ops"
- New icon

1.8:
- AppOps for a specific app can now also be launched from the "App info" page of an app
- The module should now work correctly on Sony (Xperia) devices

1.7:
- Added launcher icon for ROMs where there's no icon in Settings
- Reverted sorting in AppOps to default for now
- Potential fix for HTC devices

1.6.1:
- Sort entries in App ops alphabetically.

1.6:
- Another attempt at fixing Samsung-related issues. "App ops" should now be listed below "Apps", wherever "Apps" may be
on your device.

1.5:
- On Samsung devices with a tabbed interface in "Settings", "App ops" should now be displayed in the "General" tab only.

1.4:
- Should fix issue where "App ops" was shown more than once in "Settings"

1.3:
- Fixed Android 4.3 compatibility

1.2:
- No longer allow module to be installed on Android versions before 4.3

1.1:
- Add "App ops" in Settings app; thirdparty AppOps-launcher no longer required!



What is AppOps(Xposed)? What's the difference between AppOps and permissions?


AppOps is a feature that is included in Android starting with JellyBean 4.3. It allows the user to limit an apps functionality, regardless of permissions granted; for example, you can prevent an app from reading your contact list, or accessing your current location. The difference between revoking permissions and using AppOps is that in the latter case, the affected app will not know what happend and, most importantly, will (usually) not crash. In the case of the location, the app will think that the location is currently unavailable. In the case of your contact list, the app will see an empty list. See this flowchart for an example:

Click image for larger version

Name:	appops_flowchart.png
Views:	240
Size:	69.0 KB
ID:	3321424

You'll notice ALLOWED, IGNORED and ERRORED; these are the so-called modes, which can be set for each operation. The AppOps interface is very simple, as it provides an on/off switch for every operation. Using this, you switch between ALLOWED and IGNORED, which is usually enough. ERRORED will (likely) make an app crash, or in some cases it will behave exactly as IGNORED.

In the flowchart above, the permission for reading the contact list is android.permission.READ_CALL_LOG,
the corresponding app op is OP_READ_CALL_LOG. Not every permission has a corresponding op, and likewise some ops don't have a corresponding permission. For example, there's no op for the network access permission android.permission.INTERNET, and there's no permission corresponding to the OP_POST_NOTIFICATION op. Note that some app ops are used internally by Android: for example, starting with KitKat Android only allows one app to act as the messaging app; this is controlled by OP_WRITE_SMS.

You'll also notice that in the AppOps app-list, there are often more ops listed for an app than when clicking it. This is because Android groups certain ops into one switch. For example, the "Location" switch controls 7 ops at once: OP_COARSE_LOCATION, OP_FINE_LOCATION, OP_GPS, OP_WIFI_SCAN, OP_NEIGHBORING_CELLS, OP_MONITOR_LOCATION, OP_MONITOR_HIGH_POWER_LOCATION.

Another important thing to keep in mind is that AppOps was not intended for end-users, so some features do not work as advertised. Limiting "Keep awake" for example has no effect, as this was not implemented by the Android developers.

Until Android 4.4.2, you could access a hidden AppOps interface in the "Settings" app, which you could use to limit the operations of apps; root access was not needed. In 4.4.2, this possibility was disabled. The interface was still there, but it could not be launched from the outside anymore. It was at this point that I decided to create AppOpsXposed, initially a *really* simple (source code) Xposed module, that restored the previous behaviour by hacking into the "Settings" app and re-enabling the interface again.

Starting with AppOpsXposed 1.1, I also added an entry in the "Settings" app, so a launcher icon was not needed anymore. This however only worked for AOSP and AOSP-based ROMs, so I had to add support for ROMs from Sony, HTC, Samsung, etc.. This proved to be a difficult task over time, as many made major modifications to the "Settings" app, and I had no way of testing the code without an actual device - my only device is a Nexus 4. I thus had to rely on user-supplied logs, and then hope that they follow up with more info, to get an issue in the "Settings" app fixed.

Starting with AppOpsXposed 1.21, I added a feature called "Compatibility mode", which ignored the AppOps interface in the Settings app, which didn't use the AppOps interface in your settings app, but rather one included in AppOpsXposed itself. This makes it much easier to fix bugs and add new features, and relieves me of the pain in the ass that is the support of so many different ROMs out there. See another flowchart for a TL;DR:

Click image for larger version

Name:	appopsxposed_flowchart.png
Views:	234
Size:	85.5 KB
ID:	3321425

Starting with AppOpsXposed 1.25, "Compatibility mode" was enabled for all ROMs, and could no longer be disabled. The app uses the GET_APP_OPS_STATS and UPDATE_APP_OPS_STATS permissions to access and change operation modes; this also allows the app to work without Xposed, by installing it as a system app (because the *_APP_OPS_STATS permissions are not granted to normal applications).

I have plans to add several new features in the AppOps interface, but as always, be patient. I'm often busy and this is just my hobby!


AppOps guide - coming soon!



READ BEFORE YOU POST


It might seem stupid, but before reporting a crash please try the following: uninstall AppOpsXposed, reinstall it, re-enable it in the Xposed Installer, reboot. It often helps, don't as me why.

Post AT LEAST the following info:
  • Device,
  • Android version (4.3, 4.4, etc.)
  • Name and type (stock/custom) of ROM
  • In AppOpsXposed's settings menu there's an option "Build bug report" (see below) - use it! Normal logcats are not enough!

Click image for larger version

Name:	Screenshot_2014-09-06-15-35-35.png
Views:	18923
Size:	82.5 KB
ID:	2926840Click image for larger version

Name:	Screenshot_2014-09-06-15-35-43.png
Views:	19224
Size:	94.7 KB
ID:	2926841

SCREENSHOTS

Click image for larger version

Name:	header.png
Views:	31220
Size:	109.9 KB
ID:	2495854Click image for larger version

Name:	appinfo.png
Views:	27230
Size:	123.4 KB
ID:	2495853

Demonstration of fixed layout in AppOpsDetails: left is with AppOpsXposed, right is without.
Click image for larger version

Name:	russian_ok.png
Views:	24296
Size:	137.2 KB
ID:	2499124Click image for larger version

Name:	russian_broken.png
Views:	22331
Size:	63.7 KB
ID:	2499125


>>> DOWNLOAD LINK (github) <<<
Attached Files
File Type: apk AppOpsXposed-1.28.apk - [Click for QR Code] (857.5 KB, 264 views)
Last edited by caspase; Yesterday at 03:41 PM.
The Following 129 Users Say Thank You to caspase For This Useful Post: [ View ]
 
 
11th December 2013, 01:02 PM |#2  
Junior Member
Thanks Meter: 1
 
More
Quote:
Originally Posted by caspase

AppOpsXposed is a quick-'n-dirty module for the Xposed framework that restores the AppOps functionality on Android 4.4.2. The module enables the :android:show_fragment hack used by many AppOps-launching apps on KitKat and also adds "App ops" in the native android Settings app.

ChangeLog:

1.1:
- Add "App ops" in Settings app; thirdparty AppOps-launcher no longer required!



Source code is available on github (can't post link though).

Is root required ?
Last edited by dive3000; 11th December 2013 at 01:10 PM.
The Following User Says Thank You to dive3000 For This Useful Post: [ View ]
11th December 2013, 01:53 PM |#3  
caspase's Avatar
OP Senior Member
Thanks Meter: 251
 
More
Quote:
Originally Posted by dive3000

Is root required ?

It requires the Xposed Framewoek, so yes!
The Following User Says Thank You to caspase For This Useful Post: [ View ]
11th December 2013, 03:36 PM |#4  
Member
Thanks Meter: 4
 
More
Quote:
Originally Posted by caspase

It requires the Xposed Framewoek, so yes!

Fancy uploading it to the repo at http://repo.xposed.info/ ?
11th December 2013, 05:08 PM |#5  
CruxHumanus's Avatar
Senior Member
Thanks Meter: 46
 
More
Great job, thank you!
11th December 2013, 07:31 PM |#6  
stfudude's Avatar
Senior Member
Flag Egypt
Thanks Meter: 304
 
More
The module itself doesn't need root right?

Sent from my Nexus 7 using Tapatalk 4
11th December 2013, 08:39 PM |#7  
caspase's Avatar
OP Senior Member
Thanks Meter: 251
 
More
Quote:
Originally Posted by drewstiff

Fancy uploading it to the repo at ... ?

Done, can't post link though, need 10 posts first

Quote:
Originally Posted by stfudude

The module itself doesn't need root right?

Nope, but it's useless w/o root since Xposed Framework needs root. The source is available on github (link
11th December 2013, 10:16 PM |#8  
Psychosi42's Avatar
Member
Flag Kansas City
Thanks Meter: 24
 
More
Works perfectly for me ... and I love that you added the AppOps to the settings menu thank you much!
12th December 2013, 02:43 AM |#9  
tariq2kn's Avatar
Senior Member
Thanks Meter: 122
 
More
Please add support for 4.3 S3.
Where is it shown in settings?
Last edited by tariq2kn; 12th December 2013 at 02:48 AM.
12th December 2013, 07:41 AM |#10  
caspase's Avatar
OP Senior Member
Thanks Meter: 251
 
More
Quote:
Originally Posted by tariq2kn

Please add support for 4.3 S3.
Where is it shown in settings?

It should be shown in the "Personal" section, or the very last entry in Settings.

To add proper support for devices not running stock Android I need the Settings.apk file, since the module's design is very implementation-specific.

Sent from my Nexus 4 using xda app-developers app
Post Reply Subscribe to Thread
Previous Thread Next Thread
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes