2012-07-11 58 views
2

我有一個需要顯示某些PDF文件的應用程序。這些文件對設備來說是本地的,並且該設備用於高安全性的位置,而無需網絡訪問。如何關閉或停止我在Android中啓動的外部應用程序

直到安卓得到一些天生的能力,或庫中顯示PDF文件,我依靠AdobeReader.apk,我正是如此火了:

Intent i = new Intent(Intent.ACTION_VIEW); 
i.setDataAndType(Uri.fromFile(dgfile), "application/pdf"); 
i.setClassName("com.adobe.reader", "com.adobe.reader.AdobeReader"); 
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); 
// ctx is a passed-in Context of my main Activity 
try { 
    ctx.startActivity(i); 
} 
catch (ActivityNotFoundException e) { // incase no viewer installed 
    Log.e("DG_External", "No viewer found!"); 
} 

這工作完全,但之後我完成了顯示我想停止它並返回到我的主應用程序。 this S.O question上的'贏'回答說,如果我使用StartActivityForresult()我可以做到這一點finishActivity()但我不能得到它的工作(我不明白它如何工作,因爲沒有我們要停止)

仍然是活動的情況下,我改變了我的StartActivity到:

((Activity)ctx).startActivityForResult(i, 33); //!! // 33 = arbitrary r.c. 

此調用的Adobe閱讀器就好了,但是做了......

((Activity)ctx).finishActivity(33); 

...沒有產生任何結果。我嘗試在try/catch中包裝它,並沒有拋出異常。

我在做什麼錯,我該如何做到這一點?提前致謝!

+0

通過使用Android SDK,無法從您自己的活動A完成活動B,一旦A已將控制權交給B.由用戶決定何時完成閱讀並希望去回到你的應用程序。 – tiguchi 2012-07-11 19:25:58

+0

我不認爲你可以強制完成一項外部活動。您希望PDF查看器加載並顯示文件,但在一段時間過後纔會死掉? – CSmith 2012-07-11 19:27:04

+0

也許你可以開始一個你擁有的活動,但是在一個新的任務中。然後,此活動將啓動Acrobat,但執行的任務相同。然後你可以通過執行exit()函數來控制這個單獨的任務。 – CSmith 2012-07-11 19:34:28

回答

1

想想這個的另一種方式是如何將我的應用程序放到顯示器的頂部並將AdobeReader移動到背景?

致電startActivity()您的某項活動。您應用程序中的某些內容確定「PC上的用戶關閉了文檔」。那東西可以叫startActivity()

+0

我試過這個沒有成功。因爲這是從這個線程的方向改變,我已經開始爲它的新線程:http://stackoverflow.com/questions/11453724/bring-my-activity-back-to-the-top。同時,我已將你的回答標記爲「已回答」,並給你+1,至少給了我一些希望。 – user316117 2012-07-12 14:13:34

相關問題