我想从我刚才写的另一个应用程序启动/运行/启动我在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
获得了一些结果。
缺少什么?
答案 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);