Git Product home page Git Product logo

tvapprepo's Issues

Folders

What if I could generate shortcuts with a specific Intent to an activity in this app. This Intent would load a specific list of apps, much like a folder.

Support for multiple APKs

Apps like GPhotos have several APK variants for different device types. These should be supported. Probably have a JSON structure / key:value set. When this is found, we open up a dialog for users to pick the best one.

DTV APP

I'm using your software on KIII PRO Android 7.1.2 by supercelerom and your app just doenst work when I try to use on DTV APP.

Please could you fix it?

DTV APP:
DTV_2017-07-25.zip

Crash trying to uninstall app

Crash log

Fatal Exception: java.lang.NullPointerException: Attempt to read from field 'java.lang.String android.content.pm.PackageInfo.packageName' on a null object reference
   at news.androidtv.tvapprepo.utils.PackageInstallerUtils.uninstallApp(Unknown Source)
   at news.androidtv.tvapprepo.fragments.AppDetailsFragment$ItemViewClickedListener.onItemClicked(Unknown Source)
   at news.androidtv.tvapprepo.fragments.AppDetailsFragment$ItemViewClickedListener.onItemClicked(Unknown Source)
   at android.support.v17.leanback.widget.DetailsOverviewRowPresenter$ActionsItemBridgeAdapter$1.onClick(DetailsOverviewRowPresenter.java:90)
   at android.view.View.performClick(View.java:5198)
   at android.view.View.onKeyUp(View.java:9879)
   at android.widget.TextView.onKeyUp(TextView.java:6251)
   at android.view.KeyEvent.dispatch(KeyEvent.java:2664)
   at android.view.View.dispatchKeyEvent(View.java:9234)
   at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)
   at android.support.v17.leanback.widget.BaseGridView.dispatchKeyEvent(BaseGridView.java:843)
   at android.support.v17.leanback.widget.HorizontalGridView.dispatchKeyEvent(HorizontalGridView.java:50)
   at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)
   at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)
   at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)
   at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)
   at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)
   at android.support.v17.leanback.widget.BaseGridView.dispatchKeyEvent(BaseGridView.java:843)
   at android.support.v17.leanback.widget.VerticalGridView.dispatchKeyEvent(VerticalGridView.java:40)
   at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)
   at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)
   at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)
   at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)
   at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)
   at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)
   at com.android.internal.policy.PhoneWindow$DecorView.superDispatchKeyEvent(PhoneWindow.java:2395)
   at com.android.internal.policy.PhoneWindow.superDispatchKeyEvent(PhoneWindow.java:1727)
   at android.app.Activity.dispatchKeyEvent(Activity.java:2725)
   at com.android.internal.policy.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:2310)
   at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:4273)
   at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4235)
   at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3783)
   at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3836)
   at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3802)
   at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3931)
   at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3810)
   at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3988)
   at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3783)
   at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3836)
   at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3802)
   at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3810)
   at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3783)
   at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3836)
   at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3802)
   at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3964)
   at android.view.ViewRootImpl$ImeInputStage.onFinishedInputEvent(ViewRootImpl.java:4125)
   at android.view.inputmethod.InputMethodManager$PendingEvent.run(InputMethodManager.java:2264)
   at android.view.inputmethod.InputMethodManager.invokeFinishedInputEventCallback(InputMethodManager.java:1885)
   at android.view.inputmethod.InputMethodManager.finishedInputEvent(InputMethodManager.java:1876)
   at android.view.inputmethod.InputMethodManager$ImeInputEventSender.onInputEventFinished(InputMethodManager.java:2241)
   at android.view.InputEventSender.dispatchInputEventFinished(InputEventSender.java:141)
   at android.os.MessageQueue.nativePollOnce(MessageQueue.java)
   at android.os.MessageQueue.next(MessageQueue.java:323)
   at android.os.Looper.loop(Looper.java:135)
   at android.app.ActivityThread.main(ActivityThread.java:5482)
   at java.lang.reflect.Method.invoke(Method.java)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

Tv app repo crash

I have Xiaomi Mi Box Android 6.0
I have installed your app from the play Store. It seems to be just what I was looking for. But I have a problem. The problem I am having it the app crashes every time I try to create a shortcut

Banner "Icon Packs"

What if I could generate shortcut apps with banners that come from third-party apps, similar to icon packs?

1.1.3 OpenCommunity Download links To Incorrect File?

I attempted to download the TV App Repo "Open Community" version 1.1.3 .apk file at:-

https://github.com/ITVlab/TvAppRepo/releases/download/1.1.3/app-opencommunity-release.apk

but what I appear to get instead is an old version that identifies as 1.0.6.

Play Store version of 1.1.3 appears to be OK.

Could we please fix the link and/or file?

StephenH

Create Play Store distribution

Use product flavors to create a version for the Play Store that only creates shortcuts (no separate store) and no internal updates.

Then keep an unmodified version for power users

Crash on Shield TV

Installed the OpenCommunity APK on a 2017 Shield TV with the latest 5.0.1 update and the application crashes immediately.

01-19 22:19:06.089 25012 25012 W System  : ClassLoader referenced unknown path: /data/app/news.androidtv.tvapprepo-1/lib/arm64
01-19 22:19:06.103 25012 25012 D FirebaseApp: com.google.firebase.auth.FirebaseAuth is not linked. Skipping initialization.
01-19 22:19:06.107 25012 25012 D FirebaseApp: com.google.firebase.crash.FirebaseCrash is not linked. Skipping initialization.
01-19 22:19:06.111 25012 25012 I FA      : App measurement is starting up, version: 10084
01-19 22:19:06.111 25012 25012 I FA      : To enable debug logging run: adb shell setprop log.tag.FA VERBOSE
01-19 22:19:06.115 25012 25012 I FA      : To enable faster debug mode event logging run:
01-19 22:19:06.115 25012 25012 I FA      :   adb shell setprop debug.firebase.analytics.app news.androidtv.tvapprepo
01-19 22:19:06.122 25012 25012 I FirebaseInitProvider: FirebaseApp initialization successful
01-19 22:19:06.176 25012 25012 I CrashlyticsCore: Initializing Crashlytics 2.3.14.151
01-19 22:19:06.185 25012 25012 I MainFragment: onCreate
01-19 22:19:06.198 25012 25012 D MainFragment: Get RepoDatabase instance
01-19 22:19:06.206 25012 25042 D NetworkSecurityConfig: No Network Security Config specified, using platform default
01-19 22:19:06.209 25012 25012 I DynamiteModule: Considering local module com.google.android.gms.firebase_database:4 and remote module com.google.android.gms.firebase_database:4
01-19 22:19:06.209 25012 25012 I DynamiteModule: Selected remote version of com.google.android.gms.firebase_database, version >= 4
01-19 22:19:06.214 25012 25012 W System  : ClassLoader referenced unknown path: /data/user/0/com.google.android.gms/app_chimera/m/00000006/n/arm64-v8a
01-19 22:19:06.223 25012 25012 D d       : Create new instance
01-19 22:19:06.269 25012 25012 D MainFragment: [ResolveInfo{e523280 com.nvidia.shield.welcome/.WebViewer m=0x108000}, ResolveInfo{362b0b9 mobi.mgeek.TunnyBrowser/.BrowserActivity m=0x108000}, ResolveInfo{af3ccfe com.android.documentsui/.LauncherActivity m=0x108000}, ResolveInfo{cb7dc5f com.nvidia.blakepairing/.BlakePairingLoadingActivity m=0x108000}, ResolveInfo{fe7f6ac com.nvidia.inputviewer/.MainActivity m=0x108000}, ResolveInfo{7f49f75 com.plexapp.mediaserver.smb/com.plexapp.mediaserver.MainActivity m=0x108000}]
01-19 22:19:06.296 25012 25012 D MainFragment: Get RepoDatabase instance
01-19 22:19:06.344 25012 25012 D MainFragment: [ResolveInfo{b809672 com.nvidia.shield.welcome/.WebViewer m=0x108000}, ResolveInfo{1c2fac3 mobi.mgeek.TunnyBrowser/.BrowserActivity m=0x108000}, ResolveInfo{e3e5f40 com.android.documentsui/.LauncherActivity m=0x108000}, ResolveInfo{d143e79 com.nvidia.blakepairing/.BlakePairingLoadingActivity m=0x108000}, ResolveInfo{73da7be com.nvidia.inputviewer/.MainActivity m=0x108000}, ResolveInfo{950801f com.plexapp.mediaserver.smb/com.plexapp.mediaserver.MainActivity m=0x108000}]
01-19 22:19:06.368 25012 25012 D phs:ipc-binder-client: phs: RegisterClient(): transact returned 0, NO_ERROR=0
01-19 22:19:06.368 25012 25012 D phs:ipc-binder-client: phs: RegisterClient() timeout is 5000
01-19 22:19:06.371   759   774 D RSMouse : mFeatureEnabled=true  mPackageEnabled=false
01-19 22:19:06.412 25012 25068 I OpenGLRenderer: Initialized EGL, version 1.4
01-19 22:19:06.412 25012 25068 D OpenGLRenderer: Swap behavior 2
01-19 22:19:06.417 25012 25012 D e       : ResolveInfo{b809672 com.nvidia.shield.welcome/.WebViewer m=0x108000}
01-19 22:19:06.417 25012 25012 D e       : com.nvidia.shield.welcome.WebViewer
01-19 22:19:06.417 25012 25012 D e       : Device Help
01-19 22:19:06.420 25012 25012 D e       : ResolveInfo{1c2fac3 mobi.mgeek.TunnyBrowser/.BrowserActivity m=0x108000}
01-19 22:19:06.420 25012 25012 D e       : mobi.mgeek.TunnyBrowser.BrowserActivity
01-19 22:19:06.420 25012 25012 D e       : Dolphin
01-19 22:19:06.422 25012 25012 D e       : ResolveInfo{e3e5f40 com.android.documentsui/.LauncherActivity m=0x108000}
01-19 22:19:06.422 25012 25012 D e       : com.android.documentsui.LauncherActivity
01-19 22:19:06.422 25012 25012 D e       : Documents
01-19 22:19:06.425 25012 25012 D e       : ResolveInfo{d143e79 com.nvidia.blakepairing/.BlakePairingLoadingActivity m=0x108000}
01-19 22:19:06.425 25012 25012 D e       : com.nvidia.blakepairing.BlakePairingLoadingActivity
01-19 22:19:06.425 25012 25012 D e       : SHIELD Controller
01-19 22:19:06.428 25012 25012 D e       : ResolveInfo{73da7be com.nvidia.inputviewer/.MainActivity m=0x108000}
01-19 22:19:06.428 25012 25012 D e       : com.nvidia.inputviewer.MainActivity
01-19 22:19:06.428 25012 25012 D e       : Input Viewer
01-19 22:19:06.431 25012 25012 D e       : ResolveInfo{950801f com.plexapp.mediaserver.smb/com.plexapp.mediaserver.MainActivity m=0x108000}
01-19 22:19:06.431 25012 25012 D e       : com.plexapp.mediaserver.MainActivity
01-19 22:19:06.431 25012 25012 D e       : Plex Media Server
01-19 22:19:06.566   693  1416 I WindowManager: Destroying surface Surface(name=com.google.android.leanbacklauncher/com.google.android.leanbacklauncher.MainActivity) called by com.android.server.wm.WindowStateAnimator.destroySurface:2016 com.android.server.wm.WindowStateAnimator.destroySurfaceLocked:881 com.android.server.wm.WindowState.destroyOrSaveSurface:2087 com.android.server.wm.WindowManagerService.tryStartExitingAnimation:3058 com.android.server.wm.WindowManagerService.relayoutWindow:2938 com.android.server.wm.Session.relayout:216 android.view.IWindowSession$Stub.onTransact:286 com.android.server.wm.Session.onTransact:137
01-19 22:19:06.664   693   713 I ActivityManager: Displayed news.androidtv.tvapprepo/.activities.MainActivity: +606ms
01-19 22:19:06.671  1568  1568 D ViewRootImpl[MainActivity]: changeCanvasOpacity: opaque=false
01-19 22:19:06.672  1568  1568 D ViewRootImpl[MainActivity]: changeCanvasOpacity: opaque=false
01-19 22:19:06.754 25012 25012 D AndroidRuntime: Shutting down VM
01-19 22:19:06.779 25012 25012 E AndroidRuntime: FATAL EXCEPTION: main
01-19 22:19:06.779 25012 25012 E AndroidRuntime: Process: news.androidtv.tvapprepo, PID: 25012
01-19 22:19:06.779 25012 25012 E AndroidRuntime: com.google.firebase.database.c: No properties to serialize found on class news.androidtv.tvapprepo.b.a
01-19 22:19:06.779 25012 25012 E AndroidRuntime: 	at com.google.android.gms.b.lk$a.<init>(Unknown Source)
01-19 22:19:06.779 25012 25012 E AndroidRuntime: 	at com.google.android.gms.b.lk.a(Unknown Source)
01-19 22:19:06.779 25012 25012 E AndroidRuntime: 	at com.google.android.gms.b.lk.e(Unknown Source)
01-19 22:19:06.779 25012 25012 E AndroidRuntime: 	at com.google.android.gms.b.lk.b(Unknown Source)
01-19 22:19:06.779 25012 25012 E AndroidRuntime: 	at com.google.android.gms.b.lk.a(Unknown Source)
01-19 22:19:06.779 25012 25012 E AndroidRuntime: 	at com.google.firebase.database.a.a(Unknown Source)
01-19 22:19:06.779 25012 25012 E AndroidRuntime: 	at news.androidtv.tvapprepo.b.d$1.a(Unknown Source)
01-19 22:19:06.779 25012 25012 E AndroidRuntime: 	at com.google.android.gms.b.hy.a(Unknown Source)
01-19 22:19:06.779 25012 25012 E AndroidRuntime: 	at com.google.android.gms.b.iz.b(Unknown Source)
01-19 22:19:06.779 25012 25012 E AndroidRuntime: 	at com.google.android.gms.b.jd$1.run(Unknown Source)
01-19 22:19:06.779 25012 25012 E AndroidRuntime: 	at android.os.Handler.handleCallback(Handler.java:751)
01-19 22:19:06.779 25012 25012 E AndroidRuntime: 	at android.os.Handler.dispatchMessage(Handler.java:95)
01-19 22:19:06.779 25012 25012 E AndroidRuntime: 	at android.os.Looper.loop(Looper.java:154)
01-19 22:19:06.779 25012 25012 E AndroidRuntime: 	at android.app.ActivityThread.main(ActivityThread.java:6120)
01-19 22:19:06.779 25012 25012 E AndroidRuntime: 	at java.lang.reflect.Method.invoke(Native Method)
01-19 22:19:06.779 25012 25012 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
01-19 22:19:06.779 25012 25012 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
01-19 22:19:06.780   693  1529 W ActivityManager:   Force finishing activity news.androidtv.tvapprepo/.activities.MainActivity```

Live Channel

Using metadata from apps, create a Live Channel that can display YouTube video trailers for the apps (assuming these videos exist). The app link would be an install card which would open up the app to that app's details page.

This would need each app to have some sort of videoUrl link.

The app link can receive data stored in the InternalProviderData for the program.

The Live Channel would need to be able to play YouTube videos

Pull data from Firebase

From Firebase I want to be able to obtain a list of APKs which need to be generated. Then my Python script will generate them. Then I upload these APKs.

Add a row for downloaded APKs

On Nougat, there's a weird bug where you can't install an app through an intent right after you download it. Like what TinyDL does, add a row for downloaded APK files so that users can at least see their files and pick one to download.

Build error see comment

Pulling down the repo and then running on a 7.0 emulator produces this error

FATAL EXCEPTION: main Process: news.androidtv.tvapprepo, PID: 4377
java.lang.RuntimeException: Unable to start activity ComponentInfo{news.androidtv.tvapprepo/news.androidtv.tvapprepo.activities.MainActivity}: java.lang.NullPointerException: Attempt to invoke interface method 'boolean java.util.List.add(java.lang.Object)' on a null object reference

Which automatically closes the app upon launch

Move LeanbackShortcut property

Each apk datum should not contain a leanback shortcut property. The shortcut apk file does not change per-version. Instead, there should be another main leaf with something called 'leanbackShortcuts'. If that value is present based on the package name, then it downloads the shortcut.

If the package name is not there, we don't download it.

The value refers to the download URL from the apk uploaded to Firebase.

Reduce install dialog popups

Starting a download works as intended, but then multiple install dialogs will appear for the app which is not intended.

Add option to force screen orientation

Some handheld apps force vertical orientation preventing a correct visualisation on TV, adding an option to force landscape orientation would enhance UX on TV.

Enforce PNGs

If the banner or icon is not a PNG, issue an error and stop the process. This is causing the build process to fail down the line because I'm downloading a JPG but saying it's a PNG.

Graphics

Come up with some assets:

  • App icon
  • App banner
  • Sideloadtag
  • Downloaded APK
  • About app / credits

Fix Firebase permissions

Right now read = true always because I can't figure out how to get the right permissions. This will require re-reading the docs

mkjkjt

URL to APK: hyueuuu
Banner(If Submitted): tuxute5au

Language support

I'm not sure but I've tried creating shortcuts for non English apps and it keeps failing and get a build failed error. (Chinese and Korean characters for app name)
Is this due to language restrictions? Or the app isn't supported.
Thanks

Theme with Palette

Use Palette to theme app cards and each app's page to make each one more colorful

Read Launcher Shortcuts

What if I could read the launcher shortcuts from an XML file or dynamically on Android 7.1+ devices and make it easy to put those Intents into a shortcut on the homescreen?

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.