Giter Site home page Giter Site logo

permission-pilot's People

Contributors

d4rken avatar dragongod97677 avatar gaich avatar izzysoft avatar novas78 avatar nriver avatar tacothedank avatar therealmystic avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

permission-pilot's Issues

Install Source showing incorrectly for apps installed in multiple profiles

In the attached screenshot, you'll see that the File Manager+ app is showing up along with details of its Twin underneath. The problem here is the install source shown for the app installed in the Main Profile. In this case, it should be SAI, and not Shelter, because Shelter is the install source for the app installed in the Work Profile.

Screenshot_2022-07-19-18-52-26-64_ce34de6323cfaeb7a2880d42987990b1

Refresh button

The refresh button seem doesn't work, i even tried tapping it then doing nothing for a full 2 minutes, waiting if it refreshes and if the modification i did to a app's permission shows up but nothing really happened.

Apps installed only in Work Profile shows presence of Twin incorrectly

This is a bug I discovered during our discussion here:

#20 (comment)

Screenshot_2022-07-19-19-48-12-62_ce34de6323cfaeb7a2880d42987990b1

The app Fx is installed only in the Work Profile. But it shows up in the Apps Tab along with other apps in the Main Profile.

The App Details page further shows the twin app as being installed in the Work Profile. The fact is there is no twin app in this case. There is only one installation, and it is in the Work Profile.

Please look into this.

SharedUserID status

Please add the SharedUserID status for apps.

The same should also reflect in the icon indicators.

For example, the SD Maid unlocker has no internet icon, but it should ideally show the internet icon with an orange colour, since the main SD Maid app has internet access.

Screenshot_2022-07-17-20-19-52-60_ce34de6323cfaeb7a2880d42987990b1

[NEW FEATURE]: Sibling Details with App Link

Under App Details where you show Siblings for apps with SharedUserID, can you also show the app icons for apps using the same IDs (Siblings)?

The icons themselves will be links that open the App Details page of the respective apps.

Something like this:

Siblings

Duplicate profile name under 'Twins'

The profile name shows up twice for 'Twins'.

iMarkup_20220720_085054

Are you able to identify the actual Profile Name where the app is installed or is it just assumed to be Work Profile?

System App Indicator

In the Apps tab, can we show the System Apps with some sort of an indicator?

Some suggestions:

  1. The whole row for System apps will have a very light (very faint) orange background.

  2. There will be a small circular orange coloured dot on the top right corner of the app icon.

  3. 'System' text would be written underneath the app icon.

Additional Sort Category: Install Source

In the Sort categories (in Apps tab), can we have an additional sort category called 'Install Source'?

This will sort all apps by their install sources.

Screenshot_2022-07-18-10-49-16-56_ce34de6323cfaeb7a2880d42987990b1

It will basically list all the sources in collapsed form:

  1. Google Play Store
  2. OEM Store (replace with correct Store Name)
  3. Sideloaded Apps

User can expand each category to view apps installed using each source. Sideloaded apps will be further sorted by the Installer Source, i.e. all apps installed using SAI will be sorted together alphabetically, those installed using Chrome will appear together, those installed using PC/ ADB will appear together, etc.

In fact, a sub-filter by source in this section would be great too.

[NEW FEATURE]: Summary of important permissions

When clicking on an app in the Apps tab, the new page shows all the permissions for the app.

Is it possible to provide a summary of those 30 odd permissions in a very simplified way, something like this:

Summary

This will be followed by all the permissions in detail, as it exists now.

The idea is to give the user a quick glance of the status of all permissions that is available for modification within System Settings.

Each of the item above is a link to the corresponding page in System Settings for the app, useful if the user wants to make any change. Links would work only in the PRO version.

Change label from TWINS to CLONES

It is more apt to use 'Clones' in place of 'Twins'. This is because users can have multiple profiles (Work Profile as well as Multi-Users). So if an app is installed in 3 or more profiles, then 'Twins' becomes an incorrect term.

[BUG]: Wrong Installer Icon

There is this bug that shows wrong app icon for installer.

As you can see in the attached recording, most of the apps on top show the icon for SAI as the installer icon. However, if I click on any and return, the icon changes to the 'human' icon, which is what shows up for all pre-installed apps.

Record_2022-07-17-19-59-24.mp4

New Filter: Apps not in Main Profile

Can you create a new filter for apps that are NOT installed in the Main Profile?

And if there is a way to sort/ club them per profile, that would be great.

Siblings are not showing up

This refers to the following ticket:

#34

The Siblings are not showing up under SharedUserID.

App version v.0.2.4
I'm using Android 12 (Oxygen OS).

Origin Story

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.

Link to System Settings

Under App Details, if I click on any permission, it opens a new page listing all apps having that permission. Clicking on any app opens the app details page showing all permissions for that app. So it keeps going back and forth within the app.

Instead of doing this, if user clicks on a permission that can be modified, he should instead be taken to the System Settings page for that app, so he can make any change, as required.

In this context, it would be nice if clicking on the back button would take the user directly back to this app, to the same place from where he launched the System Settings page. It would be inconvenient if the back button starts going one level up in System Settings with each click, until the user is on the home screen, and then he has to launch this app.

I'm not sure if this is something under developer control, but this is something very convenient to have.

Wrong Install Date

For apps installed in other profiles that show up as Twins, the install date shown is wrong.

Screenshot_2022-07-19-18-52-26-64_ce34de6323cfaeb7a2880d42987990b1

Please look into it.

Retain Sort Selection

On the Apps tab, apps are sorted by 'Last Updated'. If the user chooses a different sort type, clicks on any app to see details, and then returns to the main screen, apps are again sorted by 'Last Updated'.

Can you make the app keep the sort order chosen by the user? It should change only when the user changes it.

Additional app filters

  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

Originally posted by @TheMysticS in #1 (comment)

Show "popular" permissions as categories like the system

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.

Originally posted by @TheMysticS in #1 (comment)

Explanation for disabled permission icons

On the Apps tab, when clicking on a permission icon that is enabled, we see a short explanation of the permission at the bottom with the 'Show' button:

Screenshot_2022-07-20-09-44-25-42_ce34de6323cfaeb7a2880d42987990b1

But this doesn't show up for permissions that are disabled (grey icons).

Can you make this standard for all icons?

The only difference will be that the explanation at the bottom will NOT display the 'Show' button when user clicks a disabled permission (grey icon), because the purpose of 'Show' is to list all apps which have that permission ENABLED.

EDIT

Thinking about it again, you might as well keep the SHOW button for all icons. There is nothing wrong in showing it for all icons.

What do you think?

Permission status indicator should launch System Settings

The permission status indicator icons can be improved in the following ways:

  1. Make them slightly bigger or more sensitive. Currently, tapping on them often simply opens the App Details page if there is slight mismatch in accuracy. There is already a message that gets displayed at the bottom, explaining what that permission is all about. Clicking on 'Show' launches that permission screen, listing all apps that have access to that permission.

  2. You can consider implementing a scrollable bar (show a small indicator for the same) to accommodate more permissions there.

  3. If a long-press action can be implemented, that would be great. Long-pressing on any icon would open the corresponding System Settings permissions page for that app.

Link to common search terms

This isn't a bug, but the average user is most likely to use these terms when searching for permissions:

  1. Internet
  2. SMS
  3. Microphone

Unfortunately, the system uses a different set of terms for these permissions, and as a result a search for these (and others) terms yields a blank result.

Can something be done about it to 'intelligently' show permissions that the user is trying to search:

Screenshot_2022-07-17-20-36-38-75_ce34de6323cfaeb7a2880d42987990b1

Screenshot_2022-07-17-20-37-03-24_ce34de6323cfaeb7a2880d42987990b1

Screenshot_2022-07-17-20-39-10-19_ce34de6323cfaeb7a2880d42987990b1

Multiple Profiles Filter

Under the new filter 'Multiple Profiles', apps installed in just one profile other than Main Profile also show up.

Ideally, apps installed in more than one profile only must show up in this filter (going by what the name suggests), i.e. only apps with TWINS must show up here.

If an app is installed only in one profile (Main Profile or Work Profile or Multi-User), it must NOT show up in this filter.

New filter for Apps installed in other profiles

On the Apps Tab, can you show all apps installed in other profiles (like Work Profile or Multi-Users) with a briefcase badge on them?

And a filter for the same? As you said, these apps will not show the permissions status indicators under them, but only show up there to inform the user about having been installed in a different profile.

This is only possible in the main profile, and that is completely fine.

[NEW FEATURE]: Clicking on App Icon will always launch App Info page

In the Apps tab, if I click on the app icon, it opens the App Info page under System Settings. This is a nice feature.

Likewise, can you make this a universal setting?

By that I mean clicking on the App Icon in Permissions Details too will launch the App Info page within System Settings. The current behaviour of showing all permissions for that app will remain if the user taps anywhere else in the app row.

Google Play Release

Do we? Do I? want this?

  • Graphic Assets
  • Screenshots
  • Description texts (could use the ones provided by @IzzySoft)
  • Can we automate releases via fastlane

OEM App Store Labels

vivo app store: com.vivo.appstore oppo app store: com.oppo.market Huawei app store: com.huawei.appmarket Samsung app store: com.sec.android.app.samsungapps Xiaomi app store: com.xiaomi.mipicks

I've added these, see:
https://github.com/d4rken/mystic-permissions/blob/c5551253f7b35b572e9a2975f901fd6c025ad9ca/app/src/main/java/eu/darken/myperm/apps/core/known/ZKnownPkgs.kt#L14-L40

Originally posted by @d4rken in #5 (comment)

Can you use the official names for the Stores like this:

  1. Samsung Galaxy Store
  2. Xiaomi GetApps
  3. Vivo V-AppStore
  4. Oppo AppMarket

The name for Store from Huawei is likely correct, but I'm not sure.

java.lang.NoSuchMethodError: No virtual method getInstallSourceInfo

@d4rken I'm not sure if this is the exact issue they're talking about, but I get this crash at runtime (version 0.2.0).

My device is a Samsung Note 9 running Android 10.

FATAL EXCEPTION: DefaultDispatcher-worker-6
Process: eu.darken.myperm, PID: 16028
java.lang.NoSuchMethodError: No virtual method getInstallSourceInfo(Ljava/lang/String;)Landroid/content/pm/InstallSourceInfo; in class Landroid/content/pm/PackageManager; or its super classes (declaration of 'android.content.pm.PackageManager' appears in /system/framework/framework.jar)
	at eu.darken.myperm.apps.core.installer.InstallerInfoKt.getInstallerInfoLegacy(InstallerInfo.kt:69)
	at eu.darken.myperm.apps.core.installer.InstallerInfoKt.getInstallerInfo(InstallerInfo.kt:54)
	at eu.darken.myperm.apps.core.AppRepo.toDefaultApp(AppRepo.kt:82)
	at eu.darken.myperm.apps.core.AppRepo.access$toDefaultApp(AppRepo.kt:26)
	at eu.darken.myperm.apps.core.AppRepo$apps$1.invokeSuspend(AppRepo.kt:43)
	at eu.darken.myperm.apps.core.AppRepo$apps$1.invoke(Unknown Source:8)
	at eu.darken.myperm.apps.core.AppRepo$apps$1.invoke(Unknown Source:4)
	at kotlinx.coroutines.flow.FlowKt__MergeKt$mapLatest$1.invokeSuspend(Merge.kt:214)
	at kotlinx.coroutines.flow.FlowKt__MergeKt$mapLatest$1.invoke(Unknown Source:13)
	at kotlinx.coroutines.flow.FlowKt__MergeKt$mapLatest$1.invoke(Unknown Source:4)
	at kotlinx.coroutines.flow.internal.ChannelFlowTransformLatest$flowCollect$3$1$2.invokeSuspend(Merge.kt:34)
	at kotlinx.coroutines.flow.internal.ChannelFlowTransformLatest$flowCollect$3$1$2.invoke(Unknown Source:8)
	at kotlinx.coroutines.flow.internal.ChannelFlowTransformLatest$flowCollect$3$1$2.invoke(Unknown Source:4)
	at kotlinx.coroutines.intrinsics.UndispatchedKt.startCoroutineUndispatched(Undispatched.kt:55)
	at kotlinx.coroutines.CoroutineStart.invoke(CoroutineStart.kt:112)
	at kotlinx.coroutines.AbstractCoroutine.start(AbstractCoroutine.kt:126)
	at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch(Builders.common.kt:56)
	at kotlinx.coroutines.BuildersKt.launch(Unknown Source:1)
	at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch$default(Builders.common.kt:47)
	at kotlinx.coroutines.BuildersKt.launch$default(Unknown Source:1)
	at kotlinx.coroutines.flow.internal.ChannelFlowTransformLatest$flowCollect$3$1.emit(Merge.kt:33)
	at kotlinx.coroutines.flow.StateFlowImpl.collect(StateFlow.kt:398)
	at kotlinx.coroutines.flow.internal.ChannelFlowTransformLatest$flowCollect$3.invokeSuspend(Merge.kt:27)
	at kotlinx.coroutines.flow.internal.ChannelFlowTransformLatest$flowCollect$3.invoke(Unknown Source:8)
	at kotlinx.coroutines.flow.internal.ChannelFlowTransformLatest$flowCollect$3.invoke(Unknown Source:4)
	at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:89)
	at kotlinx.coroutines.CoroutineScopeKt.coroutineScope(CoroutineScope.kt:264)
	at kotlinx.coroutines.flow.internal.ChannelFlowTransformLatest.flowCollect(Merge.kt:25)
	at kotlinx.coroutines.flow.internal.ChannelFlowOperator.collectTo$suspendImpl(ChannelFlow.kt:157)
	at kotlinx.coroutines.flow.internal.ChannelFlowOperator.collectTo(Unknown Source:0)
	at kotlinx.coroutines.flow.internal.ChannelFlow$collectToFun$1.invokeSuspend(ChannelFlow.kt:60)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:570)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:749)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:677)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:664)
	Suppressed: kotlinx.coroutines.DiagnosticCoroutineContextException: [StandaloneCoroutine{Cancelling}@6b0b2cc, Dispatchers.Default]

Originally posted by @TacoTheDank in #25 (comment)

[Improvement needed]: Sideloaded Apps

Apps that came pre-installed, show the installer source as 'Manual Install' with the human icon. And they are being included with Sideloaded Apps.

They are not sideloaded by the user. Apps sideloaded by the user will have a definitive source, even if installed via ADB, isn't it?

Sideloaded apps are strictly those that the user himself has installed. Can you make this filter work like this?

Fastlane setup for Google Play & F-Droid

Gladly โ€“ and thanks to you! I just triggered the updater manually โ€“ fetched the update fine, so all seems set. Just an icon is not there (ah, yes, issue is already open for that I see).

As for metadata in general: would you like a PR shipping you initial fastlane structures? I could offer to send you what I've set up with my repo currently โ€“ so you could take over from there and adjust whenever needed. And build upon โ€“ e.g. adding screenshots, icon, featureGraphic ๐Ÿ˜‰

Originally posted by @IzzySoft in #4 (comment)

[Enhancement]: Rescan/ Refresh Button

Please add a 'Rescan' or 'Refresh' button to force the app to rescan all packages and permissions.

I installed a new app and it was not showing up no matter how many different sort/ filter options I tried. I had to Force Stop this app and relaunch it. The new app then showed up.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.