2013-03-19 30 views
1

我在寫Android應用程序,我的客戶端需要一個條碼掃描器。他們是真正的具體談談它,所以他們想要的佈局是這樣的:將zxing條碼掃描器嵌入到活動中

enter image description here

如果找到一個QR碼 - 它會自動跳轉到另一個窗口。如果手動按下 - 系統會要求您手動輸入並繼續執行應用程序的其餘部分。

因此,基本上我可以將zxing代碼嵌入到我的應用程序中並將其添加到活動中,但我不希望這樣,並希望將其作爲單獨的應用程序使用。

我目前所面對的是什麼叫這樣一個獨立的活動:

IntentIntegrator integrator = new IntentIntegrator(this); 
integrator.initiateScan(); 

我也試過這樣:

IntentIntegrator intentIntegrator = new IntentIntegrator(this); 
Intent i = intentIntegrator.initiateCustomScan(); 

LocalActivityManager mgr = getLocalActivityManager(); 

Window w = mgr.startActivity("unique_per_activity_string", i); 
View wd = w != null ? w.getDecorView() : null; 

if(wd != null) { 
    scanButton.addView(wd); 
} 

但後來我得到java.lang.SecurityException異常:

03-19 12:22:55.890: E/AndroidRuntime(29394): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.menucard.barcode.scan/com.barcode.scan.ScanActivity}: java.lang.SecurityException: Requesting code from com.google.zxing.client.android (with uid 10139) to be run in process com.menucard.barcode.scan (with uid 10169) 

也許有人有一個想法如何添加一個單獨的應用程序到我的活動?或者其他方式來完成這個?

+0

由於zxing是開源的,您可以使用他們的代碼並創建您自己的視圖...您爲什麼要使用他們現有的應用程序? – 2013-03-19 11:52:36

+0

首先,他們不推薦自己,我明白爲什麼。通過這種方式,我只會關注連接到他們的應用程序,而不是整個應用程序。 如果他們更新了某些東西,我也會得到最新的更新(當然如果用戶決定更新條碼掃描器應用)。 – 2013-03-19 11:59:18

+0

如果您需要自定義掃描屏幕,那麼我認爲使用他們的代碼並創建您自己的佈局將是一個好主意,因爲您無法更改其他應用程序的視圖... – 2013-03-19 12:11:15

回答

1

不幸的是,您無法通過Intent在其他應用中嵌入外部應用。這裏的外部應用程序需要接管整個屏幕,並且處於橫向模式,適合初學者。

您應該編寫自己的應用程序,但可以在您的應用程序中重複使用Barcode Scanner的某些部分,以便它不完全從頭開始。請不要複製AndroidManifest.xml文件。我認爲它也將顯然不會與給予不同用戶界面的條形碼掃描儀混淆。剩下的就是確保你遵循Apache許可條款(簡單)。

+0

+1是的我曾考慮編寫自己的掃描應用程序,你能指導我在哪些特定文件夾的文件,我應該參考?它是CaptureActivity.java嗎?到目前爲止,我已經設法將整個源代碼移植到我的項目中,這僅僅是爲了學習目的,我並不打算複製,因爲我完全不熟悉Android開發。 – Roylee 2013-03-22 05:06:02

+1

我不能鼓勵你先複製應用程序。首先編寫您自己的應用程序,除掃描之外的所有內容。直到你有這樣的知識水平,你將不知道如何使用條形碼掃描儀源。 – 2013-03-22 11:07:31

1

@MindaugasSvirskas,您的最後一條評論正是我現在要發佈的內容:-)我過去遇到同樣的問題,在幾個應用程序中,相信我,只是使用Intents,就是這樣整個Android系統的設計,有利於應用程序之間的互通。 iOS程序員可以很容易地將掃描Zxing佈局整合到他們自己的佈局中,但我們應該利用意圖,我同意。