2012-12-04 110 views
1

我設法從我的onReceive()方法開始了一個活動,但我確實需要做一個startActivityForResult();在廣播接收器中啓動結果的活動?

有什麼辦法可以做到這一點?

在附註中,我將如何讓我的應用成爲「相機」應用,就像應用開始拍攝照片時出現的應用一樣?

回答

2

startActivityForResult只能從Activity調用,因爲它在Activity類中定義並需要活動的實例。

只能調用startAcivity()從廣播接收器,因爲在onRecieve()你只能訪問通用context對象,它並沒有定義在類startActivityForResult方法..

+1

是我找到了,怎麼當我從接收器中調用一個活動時,我會返回一些數據? –

+1

你能解釋一下你的使用案例嗎?廣播接收器並不意味着要使用那樣..來自官方的java doc ** BroadcastReceiver對象只對調用onReceive(Context,Intent)有效。一旦你的代碼從這個函數返回,系統會認爲該對象已經完成並且不再處於活動狀態。** –

3

瞭解廣播接收機最重要的是,您不應該在其中添加長時間運行的進程,因爲在5秒之後,您的應用程序將崩潰。

你的情況做的最好的事情是意圖從廣播接收器等活動,並從該活動中使用startActivityForResult(),得到的圖片,並從那裏繼續...

+0

但是,如何將圖像uri返回到請求的應用程序?這是我要做的,直到我意識到我需要傳回數據。 –

+0

爲什麼你需要使用這個廣播接收機? 什麼是你的廣播過濾器? 你想構建將運行相機的應用程序嗎? – 15412s

+0

是的,沒有。我想構建一個應用程序,它會像運行相機應用程序一樣運行,但它實際上允許用戶從其畫廊中選擇應用程序,而不是拍攝新照片。 –