2014-12-01 55 views
0

感謝您的閱讀。我想從我剛剛寫的另一個應用程序開始/運行/啓動我在Embarcadero XE7(Delphi)中編寫的應用程序。Delphi啓動外部應用程序「未找到活動」

function LaunchActivity(const Intent: JIntent): Boolean; overload; 
begin 
    SharedActivity.getPackageManager.resolveActivity(Intent, 0); 
    SharedActivity.startActivity(Intent); 
end; 

procedure TForm1.Button1Click(Sender: TObject); 
var 
    Intent: JIntent; 
begin 
    Intent := TJIntent.JavaClass.init(StringToJString('com.embarcadero.Server.MAIN')); 
    Intent.setPackage(StringToJString('com.embarcadero.Server')); 
    LaunchActivity(Intent) 
end; 

應用程序的清單文件的一些內容即將推出:

<intent-filter> 
    <action android:name="android.intent.action.MAIN" /> 
    <category android:name="android.intent.category.LAUNCHER" /> 
</intent-filter> 

我認爲,清單文件是正確的,展示我可以調用應用程序。然而,當我運行它,它說,

無活動處理意向{行動= com.embarcadero.Server.MAIN PKG = com.embaracdero.Server}

我試着用android.intent.action.MAIN與一些結果。

錯過了一些東西......有幫助嗎?

在此先感謝。

+0

見[距離Delphi發送的Android意圖(第1部分)](http://www.danieleteti.it/2013/09/26/sending-android-intents-from -delphi-part-1 /)和[從Delphi發送Android內容(第2部分)](http://www.danieleteti.it/2014/01/13/sending-android-intents-from-delphi-part-2 /)。 – 2014-12-02 01:38:54

回答

0

我找到了啓動外部應用程序而不發送任何文本文件或類似的解決方案。在所有例子中,我發現你發送一個文件或類似「http://google.com」。

重要 - >這是爲了啓動外部應用程序。沒有信息被傳遞/發送到應用程序。

兩種方式。

1.-要啓動的應用程序在手機上沒有可見圖標,但可以從其他應用程序啓動。

<intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 

2.-應用程序在手機中有一個可見的圖標來手動啓動/啓動它。你可以從另一個應用程序啓動它。

 <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 

的Delphi代碼在這兩種情況下啓動應用程序是:

procedure TForm1.Button1Click(Sender: TObject); 
var 
    Intent: JIntent; 

begin 

Intent := TJIntent.Create; 
Intent.setPackage(StringToJString('com.embarcadero.Server2')); 
Intent.setAction(TJIntent.JavaClass.ACTION_MAIN); 
SharedActivity.startActivity(Intent); 

end; 

哪裏com.embarcadero.Server2是要啓動的程序包的應用程序的名稱。

希望有人可以使用這些信息。

0

這工作正常:

Intent := TJIntent.Create; 
    Intent:= SharedActivity.getPackageManager.getLaunchIntentForPackage(StringToJString(s)); 
    SharedActivity.startActivity(Intent);