6

我有兩個Android應用程序(應用程序A,應用程序B),如下圖所示。 我想通過點擊按鈕,從第一應用,當應用B啓動,則文本框將包含我想從應用A.通過文本來調用應用程序B將數據傳遞給Android中的另一個應用程序

**注 -

  1. 我有權訪問應用程序A,因此我可以修改應用程序A的代碼。我沒有訪問應用程序B.

  2. 我見過很多帖子在Stackoverflow.com和其他網站,解釋傳遞數據到第二個應用程序,但我看到它只有當你有權訪問修改這兩個類的代碼。在我的情況下,我無法訪問應用程序2,它只是安裝在我的手機上的APK。

  3. 我想像我們在通過Selenium實現網頁自動化一樣實施,我們可以訪問文本字段並在該文本字段中輸入值。

  4. 應用程序B僅用於示例目的。它可以是任何具有文本框的應用程序。

  5. 實際上,我想在應用程序A的幫助下自動化應用程序(應用程序B)的登錄過程。應用程序A擁有多個憑證,並通過從應用程序A中選擇憑證,它將啓動應用程序B並輸入應用程序B的登錄屏幕的憑證。 **

enter image description hereenter image description here

希望我能夠解釋一下我的問題。如果一些輸入需要我可以解釋。

+0

我高度懷疑這是可能的,除非乙_expects_的值。 A無法隨意修改B的視圖。 – matiash

+0

爲什麼-1不能理解。我有+1我認爲這是gud問題 – PankajAndroid

+0

使用內容提供商和廣播接收器。 –

回答

1

我只是要去給你一個頭了,爲了讓你通過,你必須對他們的控制兩個應用之間的數據,那麼你應該使用intent例如

intent.putExtra("MyData", "This is a data "); 

,並在你的其他應用用這個獲得這個數據

Bundle extras = getIntent().getExtras(); 
if (extras != null) { 
    String value = extras.getString("MyData"); 
    myText.setText(value); 
} 
+0

@SweetWisherツ你可以看到他更新了他的問題,在此之前,他從來不提關於它的任何東西,並且你可以從我的答案我故意說 我只是要去給你一個頭了,爲了你自己把數據**兩個應用之間,你必須控制他們看**,那麼你應該使用意圖例如 – k0sh

+0

@SweetWisherツ因爲你可以從他的問題看,他忘了要修改這個 **我有兩個Android應用程序(應用程序A,應用B)**,這使得它更清晰,所以幫我一個忙,刪除你的投票。 – k0sh

2

將數據傳遞給下面的意圖。 然後從其他應用程序獲取它。

PackageManager pm = context.getPackageManager(); 
Intent appStartIntent = pm.getLaunchIntentForPackage(appPackageName); 
context.startActivity(appStartIntent); 
7

您有2種選擇:

  • 應用B 預計(經由意圖)的輸入。然後你就可以啓動應用程序B和通過意圖傳遞值:

    intent.putExtra("Key", "Your data here"); 
    

    你需要知道哪些關鍵的應用程序B使用,否則你不能做到這一點。

  • 應用程序B 不期望輸入。這並不容易,並需要根訪問電話:

    有權限INJECT_EVENTS有可能鍵入文本或發送點擊任何窗口。你可以這樣做:

    Instrumentation m_Instrumentation = new Instrumentation(); 
    m_Instrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_B); //send key B 
    

    你可以找到更多的相關主題here。如果您需要幫助編譯您的應用程序,這兩個鏈接將幫助您:How to compile Android Application with system permissionsAndroid INJECT_EVENTS permission

+0

通過你提供的鏈接看起來是可能的。我可以在同一個應用程序中執行此操作,但在調用該應用程序字段中的第二個應用程序和注入值時會卡住。 –

1

除非另一個應用程序已成立的意圖,接受另一個應用程序的價值,就不能這樣做。如果你必須這樣做,反向工程B的APK,然後加入隱含的意圖來處理你需要數據的形式,並創建一個新的APK

2

我不認爲這是可能的,你沒有在應用程序的任何控制B.有幾種方法可以從A(意圖,內容提供者和廣播接收者等)嚮應用程序B發送數據,但是您不知道B是否會接受這些值,並將根據您發送的數據來操作視圖A,因爲您無法控制B.

1

如果您嘗試編寫測試或以自動方式執行某些操作(類似於WebDriver scirpt),則可以使用MonkeyRunner http://developer.android.com/tools/help/monkeyrunner_concepts.html,但可通過adb從遠程連接到設備一臺主機。

根據應用程序B如何填充這些輸入字段中的數據則可以與應用B的內容提供商進行互動。在這種情況下,您可能想與應用程序B的作者進行交流。

+0

在這種情況下,我並沒有寫測試用例,而是完全想通過Aoldication來做同樣的事情。請閱讀注意事項:-5以獲得更多相同的想法。 –

相關問題