Delphi启动外部应用程序"未找到任何活动"

时间:2014-12-01 19:40:46

标签: android delphi android-intent

我想从我刚才写的另一个应用程序启动/运行/启动我在Embarcadero XE7(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>

我认为清单文件是正确的,显示我可以调用该应用程序。但是,当我运行该程序时,它说

  

找不到处理Intent的活动{act = com.embarcadero.Server.MAIN   PKG = com.embaracdero.Server}

我尝试使用android.intent.action.MAIN获得了一些结果。

缺少什么?

2 个答案:

答案 0 :(得分:1)

我找到了启动外部应用程序的解决方案,但没有发送任何文本文件或类似文件。在所有示例中,我发现您发送了一个文件或类似&#34; http://google.com&#34;。

重要 - &gt;这是为了启动外部应用程序。没有信息传递/发送到应用程序。

两种方式。

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是要启动的应用程序包的名称。

答案 1 :(得分:0)

这很好用:

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