2016-12-01 32 views
0

當我的窗口小部件(或關聯的通知)被點擊時,PendingIntent啓動一個活動,顯示與窗口小部件相關的項目列表。如果其中一個列表項目被點擊,那麼這個小部件活動將使用標準動作意圖啓動我的主要活動。主要活動然後顯示關於所選項目的詳細信息。從Nougat中無響應的窗口小部件活動啓動的活動

這一切都通過Android 6.x Marshmallow完美工作,但在Android 7(Nougat)上,啓動的主要活動在視圖中顯示正確的數據,但整個UI完全沒有響應。按鈕,滾動,視圖刷:它沒有任何事情!唯一能做出響應的就是系統「後退」按鈕,可以按照預期將您帶回窗口小部件活動列表。

牛軋糖會改變什麼?我的構建目標是23.所有其他啓動主要活動的方式都可以正常工作,並且所有其他方式仍然適用於早期的Android版本。以下是主要活動推出的代碼:

 String uri = "file://" + mPrefs.getDbPath(); 
     Intent intent = new Intent(Intent.ACTION_VIEW); 
     intent.setDataAndType(Uri.parse(uri), "application/octet-stream"); 
     int indId = otdEvt.mId[0] > 0 ? otdEvt.mId[0] : otdEvt.mId[1]; 
     intent.putExtra(EXTRA_LAUNCH_ID, indId); 
     intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

     try { 
      startActivity(intent); 
     } 
     catch (ActivityNotFoundException e) { 
      Toast.makeText(mCtx, getString(R.string.launch_err), Toast.LENGTH_SHORT).show(); 
     } 

無論是否帶有FLAG_ACTIVITY_NEW_TASK,都沒有區別。

新信息:如果我還包含FLAG_ACTIVITY_CLEAR_TASK,則啓動的主要活動按預期工作。但是,這不是一個可以接受的解決方案,因爲按下「後退」按鈕會將其返回到主屏幕 - 而不是顯示項目列表的窗口小部件活動。我還將我的構建目標和庫更新到了24級,這是我的設備正在運行的。

+0

我有一個基於Android 7.0的Nexus 5X作爲我的「日常驅動程序」。應用程序小部件無疑會在其上啓動活動。你的測試環境是什麼(即你使用的是什麼硬件或模擬器)? – CommonsWare

+0

使用我的5x。小部件本身正確啓動列表顯示活動。這是什麼時候該活動啓動另一項活動,它打破了。 – gordonwd

回答

0

Mea culpa。徹底(耗盡)調試後,我找到了我的錯誤。這裏很難解釋,但是我在Android 2.3的時候做了一些事情,同時試圖「優化」執行時間等。無論如何,我打破了一些常識規則,採取了一些捷徑,並且只是漸漸離開與它幾年。它很容易修復,現在所有功能都可以在我的設備和報告相同問題的客戶的設備上使用。

相關問題