Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Origin Story #1

Closed
d4rken opened this issue Jul 13, 2022 · 71 comments
Closed

Origin Story #1

d4rken opened this issue Jul 13, 2022 · 71 comments
Labels
help/discussion wanted Extra attention is needed
Milestone

Comments

@d4rken
Copy link
Member

d4rken commented Jul 13, 2022

By @TheMysticS from d4rken-org/sdmaid#5609

The idea I spoke about earlier is about an app that will list all app permissions in one place. Currently, Android shows app permissions in 3 different places:

App Info page
Special Access
Permissions Manager
In order to control or just see what permissions an app has access to, the user has to go to 3 different places now.

This new app I'm suggesting will basically list every single permission an app has requested in one place, giving the user a bird's eye view of app permissions.

It will have two tabs at the bottom (or top):

Apps: This will list all the apps installed. Clicking on any app will list every single permission that the app has requested, including those that show up under Permissions Manager and Special Access, along with their status (ON/ OFF, Allowed/ Disallowed, etc.)

Permissions: This will list every single permission such as Contacts, Microphone, Camera, etc., including those that show up under Permissions Manager and Special Access. Clicking on each will show all the apps that currently has access to that permission.

This will also include internet permissions, SharedUserID status!

In both the above cases, it will be nice to segregate the output in two sections: One where apps have been allowed a permission or permissions that an app currently has access to, and another section where the same is denied.

Due to limitations of Android, this app will not allow for controlling permissions from within the app, atleast not without root. Instead, it will provide a bird's eye view of the entire permission set available to each app, and also provide a shortcut to the appropriate System Settings page, if the user wants to change any.

Currently, there is not a single app that can do this. So you may consider making one.

Thanks.

@d4rken d4rken pinned this issue Jul 13, 2022
@d4rken d4rken added the help/discussion wanted Extra attention is needed label Jul 13, 2022
@dragonGod97677
Copy link
Contributor

Speaking SharedUserID, it should have a separate tab and sort apps that have same SharedUserID

@d4rken
Copy link
Member Author

d4rken commented Jul 13, 2022

Speaking SharedUserID, it should have a separate tab and sort apps that have same SharedUserID

Not sure how that would look UI wise, so it's 3 tabs?

  • Apps
  • Permissions
  • ?SharedUserId?

@dragonGod97677
Copy link
Contributor

Speaking SharedUserID, it should have a separate tab and sort apps that have same SharedUserID

Not sure how that would look UI wise, so it's 3 tabs?

  • Apps
  • Permissions
  • ?SharedUserId?

Yes 3 tabs and sort like this but by id
Screenshot_2022-07-14-03-13-45-61
But text only, when the user taps a id, it will show a drop down list of apps have the shared id

@TheRealMystic
Copy link
Collaborator

TheRealMystic commented Jul 13, 2022

On the Apps tab where all apps are listed, a label (similar to the ones used in SD Maid) indicating SharedUserID should be fine.

Clicking on the label should list all the other apps in a small pop-up window that have the same SharedUserID.

Clicking on the app (or anywhere else in the app row) should list every single permission requested by the app, with filters to see the ones allowed and those that are disallowed.

I'm not sure if a separate tab is required.

@dragonGod97677
Copy link
Contributor

I'm not sure if a separate tab is required.

Having a tabs can sort it.

for your suggestion

On the Apps tab where all apps are listed, a label (similar to the ones used in SD Maid) indicating SharedUserID should be fine.

Why not both?

@TheRealMystic
Copy link
Collaborator

I'm not sure if a separate tab is required.

Having a tabs can sort it.

for your suggestion

On the Apps tab where all apps are listed, a label (similar to the ones used in SD Maid) indicating SharedUserID should be fine.

Why not both?

I will admit I don't fully understand the SharedUserID feature. Is this something that many apps use? As far as I understood, this SharedUserID is limited to apps from the same developer, isn't it?

If not many apps have this, then a separate tab may be unnecessary to keep the UI simple and clean.

@dragonGod97677
Copy link
Contributor

dragonGod97677 commented Jul 13, 2022

You got a point, shared id is rare can can mostly found used in system apps.
The only downloadable app on play store that i know of uses shared id is Automate

@d4rken
Copy link
Member Author

d4rken commented Jul 13, 2022

So far:

Screenshot from 2022-07-14 00-56-41

@dragonGod97677
Copy link
Contributor

dragonGod97677 commented Jul 13, 2022

So far:

Screenshot from 2022-07-14 00-56-41

Could you also add a dark theme, please?

(Sorry xd)

@d4rken
Copy link
Member Author

d4rken commented Jul 13, 2022

Lol, do you mean "Could you also add a dark theme, please?" 🤔

It will pick a theme based on your system setting.

Colors are defined here, feel free to tweak them, there is a tool to generate themes here:
https://material-foundation.github.io/material-theme-builder/

@d4rken
Copy link
Member Author

d4rken commented Jul 13, 2022

Not sure how much info is needed in the overview:

Screenshot from 2022-07-14 01-44-36

@dragonGod97677
Copy link
Contributor

Lol, do you mean "Could you also add a dark theme, please?" 🤔

It will pick a theme based on your system setting.

Colors are defined here, feel free to tweak them, there is a tool to generate themes here: https://material-foundation.github.io/material-theme-builder/

Edited my last comment and users can import their own theme?

@d4rken
Copy link
Member Author

d4rken commented Jul 14, 2022

No this is a code change. You and @TheMysticS could contribute more than just discussions if you want 🙂.

The generated files contain a color set which can replace the current one:
https://github.com/d4rken/mystic-permissions/blob/main/app/src/main/res/values/colors.xml

The purple color scheme is not super nice, it's just the default of another project of mine (https://github.com/d4rken/android-starter-v4).

@d4rken
Copy link
Member Author

d4rken commented Jul 14, 2022

Automatic builds are now working:
https://github.com/d4rken/mystic-permissions/releases

Time for 😴

@dragonGod97677
Copy link
Contributor

Automatic builds are now working: https://github.com/d4rken/mystic-permissions/releases

Time for 😴

Good night

@dragonGod97677
Copy link
Contributor

No this is a code change. You and @TheMysticS could contribute more than just discussions if you want 🙂.

The generated files contain a color set which can replace the current one: https://github.com/d4rken/mystic-permissions/blob/main/app/src/main/res/values/colors.xml

The purple color scheme is not super nice, it's just the default of another project of mine (https://github.com/d4rken/android-starter-v4).

Okay!

@TheRealMystic
Copy link
Collaborator

TheRealMystic commented Jul 14, 2022

Automatic builds are now working: https://github.com/d4rken/mystic-permissions/releases

Time for 😴

That was superfast. 😍😍

The Permissions tab can be simplified, by listing them using the same name as in System Settings:

Screenshot_20220714-075808

This list, however, will include all those permissions that appear under Special Access, as well as Permissions Manager.

Descriptions can be shown once an item is clicked or as an expandable item in the form of an 'i' button on the main screen against each permission.

Anyways, we can discuss these after a good night's sleep. I'll go through your links and help you in whatever way I can.

Thanks very much.

Goodnight.

@TheRealMystic
Copy link
Collaborator

TheRealMystic commented Jul 14, 2022

Under Android System Settings, we only see about 30 permissions (all 3 places put together). The permissions tab in this app has literally well over a hundred permissions, and many of these towards the end haven't been granted to any app.

Are these other permissions not modifiable? If so, can we have some filters for this section:

🔲 All Apps
🔲 User Apps
🔲 System Apps

🔲 Include non-modifiable permissions

@TheRealMystic
Copy link
Collaborator

Speaking SharedUserID, it should have a separate tab and sort apps that have same SharedUserID

Not sure how that would look UI wise, so it's 3 tabs?

  • Apps
  • Permissions
  • ?SharedUserId?

Yes 3 tabs and sort like this but by id Screenshot_2022-07-14-03-13-45-61 But text only, when the user taps a id, it will show a drop down list of apps have the shared id

Which app is this?

@TheRealMystic
Copy link
Collaborator

No this is a code change. You and @TheMysticS could contribute more than just discussions if you want 🙂.

The generated files contain a color set which can replace the current one: https://github.com/d4rken/mystic-permissions/blob/main/app/src/main/res/values/colors.xml

The purple color scheme is not super nice, it's just the default of another project of mine (https://github.com/d4rken/android-starter-v4).

I have proposed just one change to the primary colour: from the existing one to #002121. Is it possible to make these changes within the app and see how it looks?

@dragonGod97677
Copy link
Contributor

No this is a code change. You and @TheMysticS could contribute more than just discussions if you want 🙂.
The generated files contain a color set which can replace the current one: https://github.com/d4rken/mystic-permissions/blob/main/app/src/main/res/values/colors.xml
The purple color scheme is not super nice, it's just the default of another project of mine (https://github.com/d4rken/android-starter-v4).

I have proposed just one change to the primary colour: from the existing one to #002121. Is it possible to make these changes within the app and see how it looks?

Im gonna make a pull request for it

@dragonGod97677
Copy link
Contributor

Oh wait i think i can build it, hold on

@dragonGod97677
Copy link
Contributor

Aaaand it throws me an error

@dragonGod97677
Copy link
Contributor

Hey @d4rken how do i gonna fix this error SigningConfig "release" is missing required property "storeFile".

@TheRealMystic
Copy link
Collaborator

Hey @d4rken how do i gonna fix this error SigningConfig "release" is missing required property "storeFile".

What did you do? Modify the apk?

@TheRealMystic
Copy link
Collaborator

TheRealMystic commented Jul 14, 2022

I have prepared a layout of how the screen will look like when someone clicks on an app to see all the permissions:

Screenshot 2022-07-14 at 15 53 08

Do you like it?

The items may be reclassified to a different risk category if the current classification is not correct.

Each of the permission above is actually a direct link to System Settings for that app, so user can modify the permission, as necessary.

@d4rken
Copy link
Member Author

d4rken commented Jul 14, 2022

Hey @d4rken how do i gonna fix this error SigningConfig "release" is missing required property "storeFile".

When opening the project in Android Studio, set the buildVariant to "debug", then you should be able to modify the app and install it. In the release variant it will try to sign the APK and you don't have the keystore with the signature.

Screenshot from 2022-07-14 12-06-41

I have prepared a layout of how the screen will look like when someone clicks on an app to see all the permissions:

Screenshot 2022-07-14 at 15 15 17

Do you like it?

The items may be reclassified to a different risk category if the current classification is not correct.

Each of the permission above is actually a direct link to System Settings for that app, so user can modify the permission, as necessary.

Nice mockup! Some thoughts:

  • This looks a bit like a desktop UI though, difficult fit on a mobile device 😅.
  • I'm not sure we should classify them by "risk", I always hated that about other apps. "Risk" is subjective. also all "high risk" permissions without the app having internet are actually risky right?
  • Not every permission has "read+write" variants, for most it's just a single permission. Let's not waste a whole column for every permission on it.
  • I agree that there are many permissions that are not that interesting to the user and we should hide/collapse them. Is there a way to do it dynamically without having to classify them by hand? Maybe the most common permissions among all non-system apps?
  • You list "Body sensors" is that on purpose, are you referring to "permission groups", a permission may belong to a group, we could show that in the details too. I'm uncertain if we should actually group them by it though as they more of an internal detail that isn't really useful. These are the groups on my device:
com.felicanetworks.mfc.permission.group.FELICA_GROUP
com.google.android.gms.permission.CAR_INFORMATION
android.permission-group.CONTACTS
android.permission-group.PHONE
android.permission-group.CALENDAR
android.permission-group.CALL_LOG
android.permission-group.CAMERA
android.permission-group.UNDEFINED
android.permission-group.ACTIVITY_RECOGNITION
android.permission-group.SENSORS
android.permission-group.LOCATION
android.permission-group.STORAGE
android.permission-group.MICROPHONE
android.permission-group.NEARBY_DEVICES
android.permission-group.SMS
null

Many just belong to the null group.

@dragonGod97677
Copy link
Contributor

dragonGod97677 commented Jul 14, 2022

When opening the project in Android Studio, set the buildVariant to "debug", then you should be able to modify the app and install it. In the release variant it will try to sign the APK and you don't have the keystore with the signature.

Screenshot from 2022-07-14 12-06-41

Uh, i did the build using this
Screenshot_2022-07-14-18-38-25-83

@d4rken
Copy link
Member Author

d4rken commented Jul 16, 2022

As far as I know, it is just Samsung, Huawei and may be Oppo/ Vivo. OnePlus doesn't have an App Store, nor does Xiaomi. And neither do Nokia or Motorola. What else is left? Not sure about Sony.

We need the identifiers, e.g. what SD Maid or other apps display for an app installed from that store.

@TheRealMystic
Copy link
Collaborator

As far as I know, it is just Samsung, Huawei and may be Oppo/ Vivo. OnePlus doesn't have an App Store, nor does Xiaomi. And neither do Nokia or Motorola. What else is left? Not sure about Sony.

We need the identifiers, e.g. what SD Maid or other apps display for an app installed from that store.

Nothing. A label will only be shown for apps that do not come from any of the above sources.

@TheRealMystic
Copy link
Collaborator

Check this out:

Screenshot_20220716-185551_Settings

This is from the App Info page of an app that came pre-installed on my Samsung Phone. It is from the Samsung Galaxy Store. There are some more apps too. Almost all of the rest show Google Play Store, and if I click on it, it will take me to the App Page in the Store.

@TheRealMystic
Copy link
Collaborator

There is only one identifier for the Galaxy Store, isn't it?

By identifier, do you mean package name?

@d4rken
Copy link
Member Author

d4rken commented Jul 16, 2022

By identifier, do you mean package name?

Yes, e.g. for Google Play Store it is com.android.vending.
Screenshot from 2022-07-16 15-30-49

@TheRealMystic
Copy link
Collaborator

Here is another app that I installed using an app called SAI:

Screenshot_20220716-185915_Settings

So this app will have a label called 'Sideloaded' or 'External' or whatever suits best

@TheRealMystic
Copy link
Collaborator

By identifier, do you mean package name?

Yes, e.g. for Google Play Store it is com.android.vending. Screenshot from 2022-07-16 15-30-49

Which means there is only one identifier per brand. There are only a handful of brands that come with an app store. I can check the one for Samsung and let you know.

@TheRealMystic
Copy link
Collaborator

I will just do a Google search and list the package names of the known official stores.

@TheRealMystic
Copy link
Collaborator

Here it is (based on Google search):

Samsung: com.sec.android.app.samsungapps

Huawei: com.huawei.appmarket

From what I read, I think Oppo & Vivo use Huawei's App Gallery as an alternative to Google Play Store. They don't have a store of their own. So essentially there are only two official App Stores in addition to Google Play Store.

Apps installed from any of these Stores will not have any label for that. Only apps that have been installed using other apps will have a label.

@d4rken
Copy link
Member Author

d4rken commented Jul 16, 2022

I will just do a Google search and list the package names of the known official stores.

Can you create a new ticket to track this as new feature?
Let's keep it a bit organized 😅 , then I can also reference it in code 😄

@TheRealMystic
Copy link
Collaborator

I will just do a Google search and list the package names of the known official stores.

Can you create a new ticket to track this as new feature? Let's keep it a bit organized 😅 , then I can also reference it in code 😄

I have already done that as a new feature request for SD Maid. Do you want me to open another one?

@d4rken
Copy link
Member Author

d4rken commented Jul 16, 2022

I have already done that as a new feature request for SD Maid. Do you want me to open another one?

Yes. You can keep the information in one ticket, and link to it in the other ticket.
Data collection is 1 task, but implementing it into SD Maid and/or MysticPermissions, is two tasks :).

@TheRealMystic
Copy link
Collaborator

Okay. We can continue discussion of this particular feature here:

d4rken-org/sdmaid#5618

@TheRealMystic
Copy link
Collaborator

TheRealMystic commented Jul 17, 2022

  1. I think the yellow colour is NOT very intuitive. Grey colour would be better in my opinion (including on the permissions screen).

IMG_20220717_080037

  1. Can you add two more labels here:

    • Google Play Store
    • OEM Store (better than using actual names to save space, unless you can program it to display the correct name of the Store based on the brand of the phone)

IMG_20220717_080023

  1. Can you include count of each category in brackets (see screenshot above)?

  2. Can you include the installer icon on top right (where the installer source details are present)?

Screenshot_2022-07-17-08-00-02-20_ce34de6323cfaeb7a2880d42987990b1

@TheRealMystic
Copy link
Collaborator

TheRealMystic commented Jul 17, 2022

I'm not sure what your plans for the Permissions tab is.

For those 30 or so permissions that user can control via System Settings: Will you be displaying those with the same names as they appear in System Settings? And club all the others under Additional Permissions?

If you intend keeping the Permissions tab as it is now, then can you implement a Filter Bar like this:

iMarkup_20220717_143556

Here, the icons will all be of the same colour (green is fine). Tapping on any of them will list all apps which have that permission enabled. This bar will be scrollable horizontally to accomodate the remaining permissions not visible currently.

@TheRealMystic
Copy link
Collaborator

Internet icon should look somewhat like this:

Internet

@d4rken
Copy link
Member Author

d4rken commented Jul 17, 2022

Please open new issue tickets for separate ideas (don't forget to reference the version you are testing on).

I'm getting confused by this one 😆

@d4rken d4rken closed this as completed Jul 17, 2022
@d4rken d4rken unpinned this issue Jul 17, 2022
@d4rken d4rken added this to the v1.0.0 milestone Jul 27, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help/discussion wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

4 participants
@d4rken @dragonGod97677 @TheRealMystic and others