PRProd / HA-Firemote

Apple TV, Amazon Fire TV, Fire streaming stick, Chromecast, NVIDIA Shield, onn., Roku, Xiaomi Mi, and Android TV remote control card for Home Assistant
GNU General Public License v3.0
434 stars 66 forks source link

[New App Shortcut]: AirScreen (ionitech) #353

Closed camelcamro closed 5 months ago

camelcamro commented 5 months ago

App Name

AirScreen

Device Platform

Amazon Fire

App Store Link and/or URL to .apk file if sideloaded

https://www.amazon.de/AirScreen-AirPlay-Google-Cast-Miracast/dp/B07CPZ698R

Application Details

adb_response: mSurface=Surface(name=com.ionitech.airscreen/com.ionitech.airscreen.ui.activity.ScreenMirrorActivity)/@0x373c820 mInputMethodTarget in display# 0 Window{2f5b6f9 u0 com.ionitech.airscreen/com.ionitech.airscreen.ui.activity.ScreenMirrorActivity} hdmi_input: null device_class: tv entity_picture: /api/media_player_proxy/media_player.fire_tv_172_20_1_100? token=X friendly_name: Fire TV 172.20.1.100 supported_features: 22961

Optional Comments

this calls i already tried, but didn't work, maybe you have more ideas howto ...

adb shell am start com.ionitech.airscreen adb shell am start com.ionitech.airscreen/com.ionitech.airscreen.ui.browse.BrowseActivity adb shell am start com.ionitech.airscreen/com.ionitech.airscreen.ui.main.SplashActivity adb shell am start com.ionitech.airscreen/com.ionitech.airscreen.ui.activity.MainActivity

then also made:

`adb shell dumpsys window windows | grep -E 'ionitech'

adb_response: Window #3 Window{a708a95 u0 com.ionitech.airscreen/com.ionitech.airscreen.ui.activity.MainActivity}: mOwnerUid=10249 showForAllUsers=false package=com.ionitech.airscreen appop=NONE mBaseLayer=21000 mSubLayer=0 mToken=ActivityRecord{683895c u0 com.ionitech.airscreen/.ui.activity.MainActivity t522} mActivityRecord=ActivityRecord{683895c u0 com.ionitech.airscreen/.ui.activity.MainActivity t522} WindowStateAnimator{7564a73 com.ionitech.airscreen/com.ionitech.airscreen.ui.activity.MainActivity}: mSurface=Surface(name=com.ionitech.airscreen/com.ionitech.airscreen.ui.activity.MainActivity)/@0x25eed30 mInputMethodTarget in display# 0 Window{a708a95 u0 com.ionitech.airscreen/com.ionitech.airscreen.ui.activity.MainActivity} mInputMethodInputTarget in display# 0 Window{a708a95 u0 com.ionitech.airscreen/com.ionitech.airscreen.ui.activity.MainActivity} inputMethodControlTarget in display# 0 Window{a708a95 u0 com.ionitech.airscreen/com.ionitech.airscreen.ui.activity.MainActivity} mLastWakeLockHoldingWindow=Window{dde9015 u0 Splash Screen com.ionitech.airscreen} mLastWakeLockObscuringWindow=null mHoldScreenWindow=Window{a708a95 u0 com.ionitech.airscreen/com.ionitech.airscreen.ui.activity.MainActivity} mObscuringWindow=Window{a708a95 u0 com.ionitech.airscreen/com.ionitech.airscreen.ui.activity.MainActivity} hdmi_input: null device_class: tv entity_picture: /api/media_player_proxy/media_player.fire_tv_172_20_1_100?token=x friendly_name: Fire TV 172.20.1.100 supported_features: 22961 `

camelcamro commented 5 months ago

here maybe some hints for others ...

1.) get a list of all packages:

adb shell pm list packages -f # (full) adb shell pm list packages -3 # (list third party package names)

2.) get a list of activities of a package

adb shell dumpsys package

adb shell dumpsys package | grep -i -E 'ionitech'

adb_response: 84661e2 com.ionitech.airscreen/.cast.render.MirrorActivity a2b1bc4 com.ionitech.airscreen/.ui.activity.welcome.StreamAssistantIndexActivity 185e106 com.ionitech.airscreen/androidx.work.impl.background.systemalarm.ConstraintProxy$BatteryNotLowProxy 92dd548 com.ionitech.airscreen/androidx.work.impl.background.systemalarm.ConstraintProxy$BatteryChargingProxy 4ecba2e com.ionitech.airscreen/com.amazon.device.drm.ResponseReceiver eeefdf4 com.ionitech.airscreen/androidx.work.impl.background.systemalarm.ConstraintProxy$StorageNotLowProxy 4a03030 com.ionitech.airscreen/.service.BootBroadcastReceiver 50f0792 com.ionitech.airscreen/androidx.work.impl.background.systemalarm.ConstraintProxy$NetworkStateProxy b8e4b3a com.ionitech.airscreen/.service.admmessenger.AmazonMessageReceiver eeefdf4 com.ionitech.airscreen/androidx.work.impl.background.systemalarm.ConstraintProxy$StorageNotLowProxy 4a03030 com.ionitech.airscreen/.service.BootBroadcastReceiver e101f5c com.ionitech.airscreen/com.amazon.device.iap.ResponseReceiver 185e106 com.ionitech.airscreen/androidx.work.impl.background.systemalarm.ConstraintProxy$BatteryNotLowProxy ff80560 com.ionitech.airscreen/androidx.work.impl.background.systemalarm.RescheduleReceiver ff80560 com.ionitech.airscreen/androidx.work.impl.background.systemalarm.RescheduleReceiver 4a03030 com.ionitech.airscreen/.service.BootBroadcastReceiver ff80560 com.ionitech.airscreen/androidx.work.impl.background.systemalarm.RescheduleReceiver 92dd548 com.ionitech.airscreen/androidx.work.impl.background.systemalarm.ConstraintProxy$BatteryChargingProxy b8e4b3a com.ionitech.airscreen/.service.admmessenger.AmazonMessageReceiver c8178c com.ionitech.airscreen/androidx.work.impl.diagnostics.DiagnosticsReceiver a920ade com.ionitech.airscreen/androidx.work.impl.background.systemalarm.ConstraintProxyUpdateReceiver ca52078 com.ionitech.airscreen/.cast.render.ReceiverService 2aff6ea com.ionitech.airscreen/com.google.android.libraries.cast.tv.warg.service.WargService com.ionitech.airscreen.messenger: b47cc24 com.ionitech.airscreen/com.blankj.utilcode.util.MessengerUtils$ServerService 50e97b6 com.ionitech.airscreen/com.google.android.apps.mediashell.ClientAuthProviderService Permission [com.ionitech.airscreen.permission.CAST_AUTH] (8beeb77): sourcePackage=com.ionitech.airscreen perm=Permission{a12b3e4 com.ionitech.airscreen.permission.CAST_AUTH} Permission [com.ionitech.airscreen.permission.CAST_RENDER] (525c668): sourcePackage=com.ionitech.airscreen perm=Permission{ff95a81 com.ionitech.airscreen.permission.CAST_RENDER} Permission [com.ionitech.airscreen.permission.SANDBOX] (ab904b4): sourcePackage=com.ionitech.airscreen perm=Permission{76e08dd com.ionitech.airscreen.permission.SANDBOX} Permission [com.ionitech.airscreen.permission.RECEIVE_ADM_MESSAGE] (625617): sourcePackage=com.ionitech.airscreen perm=Permission{ce3da04 com.ionitech.airscreen.permission.RECEIVE_ADM_MESSAGE} com.ionitech.airscreen com.ionitech.airscreen/com.google.firebase.provider.FirebaseInitProvider: Provider{6229785 com.ionitech.airscreen/com.google.firebase.provider.FirebaseInitProvider} com.ionitech.airscreen/androidx.startup.InitializationProvider: Provider{3197d8d com.ionitech.airscreen/androidx.startup.InitializationProvider} com.ionitech.airscreen/com.blankj.utilcode.util.UtilsFileProvider: Provider{674adab com.ionitech.airscreen/com.blankj.utilcode.util.UtilsFileProvider} com.ionitech.airscreen/androidx.lifecycle.ProcessLifecycleOwnerInitializer: Provider{4ea9174 com.ionitech.airscreen/androidx.lifecycle.ProcessLifecycleOwnerInitializer} com.ionitech.airscreen/com.google.android.gms.ads.MobileAdsInitProvider: Provider{351be1a com.ionitech.airscreen/com.google.android.gms.ads.MobileAdsInitProvider} com.ionitech.airscreen/androidx.core.content.FileProvider: Provider{3d60d4b com.ionitech.airscreen/androidx.core.content.FileProvider} [com.ionitech.airscreen.mobileadsinitprovider]: Provider{351be1a com.ionitech.airscreen/com.google.android.gms.ads.MobileAdsInitProvider} applicationInfo=ApplicationInfo{195fe7e com.ionitech.airscreen} [com.ionitech.airscreen.androidx-startup]: Provider{3197d8d com.ionitech.airscreen/androidx.startup.InitializationProvider} applicationInfo=ApplicationInfo{d0398cb com.ionitech.airscreen} [com.ionitech.airscreen.lifecycle-process]: Provider{4ea9174 com.ionitech.airscreen/androidx.lifecycle.ProcessLifecycleOwnerInitializer} applicationInfo=ApplicationInfo{5757102 com.ionitech.airscreen} [com.ionitech.airscreen.utilcode.provider]: Provider{674adab com.ionitech.airscreen/com.blankj.utilcode.util.UtilsFileProvider} applicationInfo=ApplicationInfo{8b3c180 com.ionitech.airscreen} [com.ionitech.airscreen.firebaseinitprovider]: Provider{6229785 com.ionitech.airscreen/com.google.firebase.provider.FirebaseInitProvider} applicationInfo=ApplicationInfo{d4b7796 com.ionitech.airscreen} [com.ionitech.airscreen.provider]: Provider{3d60d4b com.ionitech.airscreen/androidx.core.content.FileProvider} applicationInfo=ApplicationInfo{28e8a9c com.ionitech.airscreen} [com.ionitech.airscreen] Package [com.ionitech.airscreen] (9b89d74): pkg=Package{f4c929d com.ionitech.airscreen} codePath=/data/app/~~1JOV8rjOYMAji9chPSR6Hw==/com.ionitech.airscreen-pQW_sRosY_ErPIA0fRxZrQ== resourcePath=/data/app/~~1JOV8rjOYMAji9chPSR6Hw==/com.ionitech.airscreen-pQW_sRosY_ErPIA0fRxZrQ== legacyNativeLibraryDir=/data/app/~~1JOV8rjOYMAji9chPSR6Hw==/com.ionitech.airscreen-pQW_sRosY_ErPIA0fRxZrQ==/lib applicationInfo=ApplicationInfo{f4c929d com.ionitech.airscreen} dataDir=/data/user/0/com.ionitech.airscreen com.ionitech.airscreen.permission.RECEIVE_ADM_MESSAGE: prot=signature, INSTALLED com.ionitech.airscreen.permission.SANDBOX: prot=signature, INSTALLED com.ionitech.airscreen.permission.CAST_AUTH: prot=signature, INSTALLED com.ionitech.airscreen.permission.CAST_RENDER: prot=signature, INSTALLED com.ionitech.airscreen.permission.RECEIVE_ADM_MESSAGE: granted=true com.ionitech.airscreen.service.BootBroadcastReceiver com.ionitech.airscreen: com.ionitech.airscreen com.ionitech.airscreen: com.ionitech.airscreen com.ionitech.airscreen com.ionitech.airscreen com.ionitech.airscreen com.ionitech.airscreen com.ionitech.airscreen: com.ionitech.airscreen/com.google.android.apps.mediashell.ClientAuthProviderService: com.ionitech.airscreen.permission.CAST_AUTH com.ionitech.airscreen/.cast.render.ReceiverService: com.ionitech.airscreen.permission.CAST_RENDER [com.ionitech.airscreen] path: /data/app/~~1JOV8rjOYMAji9chPSR6Hw==/com.ionitech.airscreen-pQW_sRosY_ErPIA0fRxZrQ==/base.apk used by other apps: [com.ionitech.airscreen, com.idom.dostream, com.amazon.imdb.tv.android.app, com.spotify.tv.android, com.esaba.downloader, com.analiti.fastest.android, com.nousguide.android.tvthek.fire, com.apktime.apktime, com.mautilus.servus.amazonfiretv, de.swr.ard.avp.mobile.android.amazon, de.twokit.screen.mirror, com.redbull.rbtv, com.amazon.bueller.music] [com.ionitech.airscreen]

camelcamro commented 5 months ago

after a long search .... i found a solution for now how to start ...

adb shell am start com.ionitech.airscreen/.ui.activity.welcome.StreamAssistantIndexActivity

this pages were helping me https://stackoverflow.com/questions/4567904/how-to-start-an-application-using-android-adb-tools/4567928?newreg=57e86f4ba757484299b00b03c6d84525 https://stackoverflow.com/questions/33441138/how-to-find-out-activity-names-in-a-package-android-adb-shell/37959688#37959688

PRProd commented 5 months ago

Isn't learning great? :smile:

I have just published Firemote version v3.3.1 which contains this new app shortcut. Enjoy!

-Doug

camelcamro commented 5 months ago

you are amazing ..... pff, so fast, thx a lot bro

PRProd commented 5 months ago

@camelcamro ~

Sorry this is late, but I meant to reply again to give you this tip as well - If you run this command:

adb shell pm dump com.ionitech.airscreen

It outputs a very descriptive layout of activities as well as actions and categories. Sometimes you need to add an activity behind the -a flag and/or a category behind the -c flag to get around security permissions issues. Thankfully, this is not extremely common, but it does happen!

The beginning of the dump from the command issued above shows this:

DUMP OF SERVICE package:
Activity Resolver Table:
  Schemes:
      cast:
        d30ae7 com.ionitech.airscreen/.cast.render.MirrorActivity filter f717aaa
          Action: "com.google.cast.action.START"
          Category: "android.intent.category.DEFAULT"
          Scheme: "cast"

  Non-Data Actions:
      android.intent.action.MAIN:
        cd83694 com.ionitech.airscreen/.ui.activity.welcome.StreamAssistantIndexActivity filter b11995
          Action: "android.intent.action.MAIN"
          Category: "android.intent.category.LEANBACK_LAUNCHER"
          Category: "android.intent.category.LAUNCHER"

 --- edited for brevity ---

This is what I normally do. After getting this info, it's simply a matter of trying commands and seeing what works.

-Doug