我有一个需要在Android TV上运行的移动应用。我没有电视来测试它,所以我试图通过模拟器。
该应用在Android版本上运行良好< 7(棉花糖,棒棒糖)。但是当我在模拟器中用Nougat打开它时,应用程序不断崩溃,我收到一条错误消息:" Leanback Launcher一直停止"。
我已经读过我应该把一些东西放在Manifest中,但我很困惑,为什么它适用于Android版本< 7?
这是我的清单,所以如果你能快速浏览并建议我放入什么内容才能使它工作?
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="------">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.VIBRATE" />
<permission android:name="android.permission.REBOOT" />
<uses-feature
android:name="android.hardware.touchscreen"
android:required="false" />
<uses-feature
android:name="android.hardware.camera"
android:required="true" />
<application
android:name="-----"
android:allowBackup="true"
android:icon="@drawable/ic_launcher_2"
android:label="@string/app_nameMain"
android:launchMode="singleTask"
android:theme="@style/AppTheme"
tools:replace="android:label">
<service android:name=".services.AutoUpdaterService" />
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<receiver
android:name="com.google.android.gms.gcm.GcmReceiver"
android:exported="true"
android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="com.codepath.gcmquickstart" />
</intent-filter>
</receiver>
<service
android:name=".services.ZipaGcmListenerService"
android:exported="false">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
</intent-filter>
</service>
<service
android:name=".services.ZipaInstanceIDListenerService"
android:exported="false">
<!-- <intent-filter> -->
<!-- <action android:name="com.google.android.c2dm.intent.RECEIVE" /> -->
<!-- </intent-filter> -->
</service>
<receiver android:name=".broadcasts.ConnectionChangeReceiver">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
<action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
</intent-filter>
</receiver>
<activity
android:name=".activities.LauncherActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:launchMode="singleTask"
android:theme="@style/App.Theme.Translucent"
android:windowSoftInputMode="adjustPan">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".activities.AlarmTriggerActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:excludeFromRecents="true"
android:label=""
android:launchMode="singleInstance"
android:theme="@style/App.Theme.Translucent"
android:windowSoftInputMode="adjustPan" />
<activity
android:name=".activities.LogInActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:windowSoftInputMode="adjustPan" />
<activity
android:name=".activities.BrowserManagerActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:theme="@style/MyHomeCustomTheme"
android:windowSoftInputMode="adjustPan" />
<activity
android:name=".activities.WizardActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:windowSoftInputMode="adjustPan" />
<activity
android:name=".activities.DeviceManagerActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:windowSoftInputMode="adjustPan" />
<service android:name="com.zipato.mqtt.MqttService" />
<activity
android:name=".activities.RegisterActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:windowSoftInputMode="adjustPan" />
<!-- <activity -->
<!-- android:name=".activities.ShakeSettingActivity" -->
<!-- android:configChanges="keyboardHidden|orientation|screenSize" -->
<!-- android:windowSoftInputMode="adjustPan"/> -->
<activity
android:name=".activities.PasswordRecoveryActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:windowSoftInputMode="adjustPan" />
<activity
android:name=".activities.CameraActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:label="CameraActivity"
android:launchMode="singleTop"
android:screenOrientation="landscape"
android:theme="@style/AppTheme"
android:windowSoftInputMode="adjustPan" />
<activity
android:name=".activities.DiscoveryActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:windowSoftInputMode="adjustPan" />
<activity
android:name=".activities.ScreenShotActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:windowSoftInputMode="adjustPan" />
<activity
android:name=".activities.MjpegStreamActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:label="CameraActivity"
android:launchMode="singleTop"
android:screenOrientation="landscape"
android:theme="@style/AppTheme"
android:windowSoftInputMode="adjustPan" />
<activity
android:name=".activities.ShowVCMenu"
android:configChanges="keyboardHidden|orientation|screenSize"
android:launchMode="singleTop"
android:windowSoftInputMode="adjustPan">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".activities.BrowserManagerActivity" />
</activity>
<activity
android:name=".activities.ShowDialogActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:theme="@style/App.Theme.Dialog"
android:windowSoftInputMode="adjustPan" />
<activity
android:name=".activities.WidgetConfigSwitch"
android:configChanges="keyboardHidden|orientation|screenSize"
android:theme="@style/App.Theme.Dialog"
android:windowSoftInputMode="adjustPan">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" />
</intent-filter>
</activity>
<activity
android:name=".activities.WidgetConfigLevel"
android:configChanges="keyboardHidden|orientation|screenSize"
android:theme="@style/App.Theme.Dialog"
android:windowSoftInputMode="adjustPan">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" />
</intent-filter>
</activity>
<activity
android:name=".activities.WidgetConfigRGBW"
android:configChanges="keyboardHidden|orientation|screenSize"
android:theme="@style/App.Theme.Dialog"
android:windowSoftInputMode="adjustPan">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" />
</intent-filter>
</activity>
<activity
android:name=".activities.WidgetConfigSecurity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:theme="@style/App.Theme.Dialog"
android:windowSoftInputMode="adjustPan">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" />
</intent-filter>
</activity>
<activity
android:name=".activities.WidgetConfigThermostat"
android:configChanges="keyboardHidden|orientation|screenSize"
android:theme="@style/App.Theme.Dialog"
android:windowSoftInputMode="adjustPan">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" />
</intent-filter>
</activity>
<activity
android:name=".activities.WidgetEventHandlerActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:excludeFromRecents="true"
android:label=""
android:launchMode="singleInstance"
android:theme="@style/App.Theme.Dialog"
android:windowSoftInputMode="adjustPan" />
<activity
android:name=".activities.CreateWeatherActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:excludeFromRecents="true"
android:launchMode="singleInstance"
android:windowSoftInputMode="adjustPan" />
<receiver
android:name=".broadcasts.ThermostatWidgetProvider"
android:label="@string/zipato_thermostat_widget">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/thermostat_appwidget_info" />
</receiver>
<receiver
android:name=".broadcasts.SecurityWidgetProvider"
android:label="@string/zipato_security_widget">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/security_appwidget_info" />
</receiver>
<receiver
android:name=".broadcasts.SwitchWidgetProvider"
android:label="@string/zipato_switch_widget">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/switch_appwidget_info" />
</receiver>
<receiver
android:name=".broadcasts.RGBWidgetProvider"
android:label="@string/zipato_rgb_widget">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/rgb_appwiget_info" />
</receiver>
<receiver
android:name=".broadcasts.LevelWidgetProvider"
android:label="@string/zipato_level_widget">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/level_appwidget_info" />
</receiver>
<receiver
android:name=".broadcasts.StartDevicesWidgetProvider"
android:label="@string/zipato_start_dev_widget">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/start_dev_app_widget_info" />
</receiver>
<receiver
android:name=".broadcasts.StartRoomsWidgetProvider"
android:label="@string/zipato_start_rooms_widget">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/start_room_app_widget_info" />
</receiver>
<receiver
android:name=".broadcasts.StartScenesWidgetProvider"
android:label="@string/zipato_start_scenes_widget">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/start_scenes_app_widget_info" />
</receiver>
<receiver
android:name=".broadcasts.StartFavoriteWidgetProvider"
android:label="@string/zipato_start_fav_widget">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/start_fav_app_widget_info" />
</receiver>
<service
android:name=".services.WidgetService"
android:exported="false">
<!-- <intent-filter> -->
<!-- <action android:name="com.google.android.c2dm.intent.RECEIVE" /> -->
<!-- </intent-filter> -->
</service>
<activity
android:name=".activities.WebViewActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:windowSoftInputMode="adjustPan" />
<activity
android:name=".activities.AccountSettingsActivity"
android:theme="@style/MyCustomTheme"
android:windowSoftInputMode="adjustPan" />
<activity
android:name=".activities.AccountContactsActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:theme="@style/MyCustomTheme"
android:windowSoftInputMode="adjustPan" />
<activity
android:name=".activities.AccountContactsAddEdit"
android:configChanges="keyboardHidden|orientation|screenSize"
android:theme="@style/MyCustomTheme"
android:windowSoftInputMode="stateHidden|adjustResize" />
<activity
android:name=".activities.ActivityUsers"
android:configChanges="keyboardHidden|orientation|screenSize"
android:theme="@style/MyCustomTheme"
android:windowSoftInputMode="stateHidden|adjustResize" />
<activity
android:name=".activities.ActivityUsersEdit"
android:configChanges="keyboardHidden|orientation|screenSize"
android:theme="@style/MyCustomTheme"
android:windowSoftInputMode="stateHidden|adjustResize" />
<activity
android:name=".activities.ActivityGeneralSettings"
android:configChanges="keyboardHidden|orientation|screenSize"
android:theme="@style/MyCustomTheme"
android:windowSoftInputMode="adjustPan" />
<activity
android:name=".activities.WalletActivity"
android:theme="@style/MyCustomTheme" />
<activity
android:name=".activities.WalletWebViewActivity"
android:theme="@style/MyCustomTheme" />
<activity
android:name=".activities.DeviceManActivity"
android:theme="@style/MyCustomTheme" />
<activity
android:name=".activities.DeviceEndpointsActivity"
android:theme="@style/MyCustomTheme" />
<activity
android:name=".activities.DeviceClusterEndpointActivity"
android:theme="@style/MyCustomTheme" />
</application>
LauncherActivity是我的默认启动器,我应该添加:
<category android:name="android.intent.category.LEANBACK_LAUNCHER" />
在其意图过滤器内?另外,我假设我也应该添加此权限:
<uses-feature android:name="android.software.leanback"
android:required="false" />
这个东西在应用程序标签中:
android:banner="@drawable/banner"
还有什么或者这是完全错误的吗?
答案 0 :(得分:1)
此问题已在此Google论坛Why do Apps that stream live TV crash under Android 7.0 Nougat on Nexus 5x?中得到解决。总而言之,您正在运行的应用尚未针对Nougat更新/未准备好 - 更高版本的Android。其他支持Nougat的应用程序似乎工作正常。