在應用程式中,我呼叫一個意圖來打開 Android 原生動態壁紙預覽螢屏,如下所示:
val intent = Intent( WallpaperManager.ACTION_CHANGE_LIVE_WALLPAPER )
intent.putExtra( WallpaperManager.EXTRA_LIVE_WALLPAPER_COMPONENT,
ComponentName(
this,
RendererWallpaperService::class.java
)
)
intent.putExtra( "testtt", 123 )
intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP
startActivity( intent )
我的RendererWallpaperService看起來像這樣:
class RendererWallpaperService : WallpaperService()
{
private var inputSensory : InputSensory?= null
override fun onCreateEngine(): Engine
{
return GLESEngine()
}
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
return super.onStartCommand(intent, flags, startId)
}
override fun onCreate() {
super.onCreate()
}
internal inner class GLESEngine : GLEngine()
{
....
}
}
問題是我無法從RendererWallpaperService 中的意圖訪問“ testtt ” Extra 。該getIntent方法是可用的活動,并因為這是一個WallpaperService類,有沒有這樣的方法。
我希望從onStartCommand獲得意圖,但它從未被稱為以太(但墻紙有效)。
我想要做的就是能夠區分原生動態壁紙預覽螢屏是從應用程式內部呼叫還是從 Android-> 動態壁紙部分呼叫。我希望簡單地將標志傳遞到意圖上,這樣我就會知道它是從應用程式呼叫的,否則如果缺少此標志,則用戶通過 android 原生 UI 打開墻紙。
我如何從意圖中讀取值,或者可能有更好的方法來確定RendererWallpaperService是從應用程式本身還是從本機 android 壁紙選擇螢屏運行的?謝謝!
uj5u.com熱心網友回復:
這是一個簡單的黑客:
private val changeWasOurs = false
class RendererWallpaperService : WallpaperService()
{
companion object {
fun setWasOurs() {
changeWasOurs = true
}
}
}
當我們更改時,變數將設定為 true,然后您可以跳過它。記住在完成每個 onStartCommand 時將變數設定為 false。
uj5u.com熱心網友回復:
WallpaperService.Engine有一種方法isPreview()專門區分用戶在ACTION_CHANGE_LIVE_WALLPAPER活動中預覽您的動態壁紙的情況和您的動態壁紙是設備的動態壁紙的情況。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/361483.html
