mirror of
				https://github.com/TeamNewPipe/NewPipe
				synced 2025-10-31 15:23:00 +00:00 
			
		
		
		
	Fix crash on Android 4.4 and surely other sdk versions
This commit is contained in:
		| @@ -1,11 +1,11 @@ | |||||||
| package org.schabi.newpipe.util; | package org.schabi.newpipe.util; | ||||||
|  |  | ||||||
| import android.annotation.SuppressLint; |  | ||||||
| import android.app.UiModeManager; | import android.app.UiModeManager; | ||||||
| import android.content.Context; | import android.content.Context; | ||||||
| import android.content.pm.PackageManager; | import android.content.pm.PackageManager; | ||||||
| import android.content.res.Configuration; | import android.content.res.Configuration; | ||||||
| import android.os.BatteryManager; | import android.os.BatteryManager; | ||||||
|  | import android.os.Build; | ||||||
| import android.view.KeyEvent; | import android.view.KeyEvent; | ||||||
|  |  | ||||||
| import org.schabi.newpipe.App; | import org.schabi.newpipe.App; | ||||||
| @@ -19,27 +19,30 @@ public final class AndroidTvUtils { | |||||||
|     private AndroidTvUtils() { |     private AndroidTvUtils() { | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @SuppressLint("InlinedApi") |  | ||||||
|     public static boolean isTv(final Context context) { |     public static boolean isTv(final Context context) { | ||||||
|         PackageManager pm = App.getApp().getPackageManager(); |         PackageManager pm = App.getApp().getPackageManager(); | ||||||
|  |  | ||||||
|  |  | ||||||
|         // from doc: https://developer.android.com/training/tv/start/hardware.html#runtime-check |         // from doc: https://developer.android.com/training/tv/start/hardware.html#runtime-check | ||||||
|         boolean isAndroidTv = ((UiModeManager) context.getSystemService(UI_MODE_SERVICE)) |         boolean isTv = ((UiModeManager) context.getSystemService(UI_MODE_SERVICE)) | ||||||
|                 .getCurrentModeType() == Configuration.UI_MODE_TYPE_TELEVISION; |                 .getCurrentModeType() == Configuration.UI_MODE_TYPE_TELEVISION; | ||||||
|  |  | ||||||
|         boolean isBatteryAbsent = ((BatteryManager) context.getSystemService(BATTERY_SERVICE)) |         // from https://stackoverflow.com/a/58932366 | ||||||
|                 .getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY) == 0; |         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { | ||||||
|  |             boolean isBatteryAbsent = ((BatteryManager) context.getSystemService(BATTERY_SERVICE)) | ||||||
|         return isAndroidTv |                     .getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY) == 0; | ||||||
|                 || pm.hasSystemFeature(AMAZON_FEATURE_FIRE_TV) |             isTv = isTv || (isBatteryAbsent | ||||||
|                 || pm.hasSystemFeature(PackageManager.FEATURE_LEANBACK) |                     && !pm.hasSystemFeature(PackageManager.FEATURE_TOUCHSCREEN) | ||||||
|                 || pm.hasSystemFeature(PackageManager.FEATURE_TELEVISION) |  | ||||||
|  |  | ||||||
|                 //from https://stackoverflow.com/a/58932366 |  | ||||||
|                 || (isBatteryAbsent && !pm.hasSystemFeature(PackageManager.FEATURE_TOUCHSCREEN) |  | ||||||
|                     && pm.hasSystemFeature(PackageManager.FEATURE_USB_HOST) |                     && pm.hasSystemFeature(PackageManager.FEATURE_USB_HOST) | ||||||
|                     && pm.hasSystemFeature(PackageManager.FEATURE_ETHERNET)); |                     && pm.hasSystemFeature(PackageManager.FEATURE_ETHERNET)); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { | ||||||
|  |             isTv = isTv || pm.hasSystemFeature(PackageManager.FEATURE_LEANBACK); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         return isTv | ||||||
|  |                 || pm.hasSystemFeature(AMAZON_FEATURE_FIRE_TV) | ||||||
|  |                 || pm.hasSystemFeature(PackageManager.FEATURE_TELEVISION); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public static boolean isConfirmKey(final int keyCode) { |     public static boolean isConfirmKey(final int keyCode) { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 bopol
					bopol