Reputation: 169
i have this java code:
final Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
final List<ResolveInfo> pkgAppsList = this.getPackageManager().queryIntentActivities( mainIntent, 0);
ArrayList<String> mIdList=new ArrayList<String>();
for(ResolveInfo mtemp:pkgAppsList){
mIdList.add(mtemp.activityInfo.applicationInfo.packageName);
}
Intent LaunchIntent = getPackageManager().getLaunchIntentForPackage(mIdList.get(2));
startActivity( LaunchIntent )
i'm trying to use this in delphi, but i don't know how to use Jlist(in delphi) istead of List < ResolveInfo > (java) because the result of the function "queryIntentActivities" is a JList.
var pm:JPackageManager;
intent:JIntent;
list:jlist;
rinfo:JResolveInfo;
begin
pm:=SharedActivityContext.getPackageManager;
intent:=TJIntent.JavaClass.getIntent(TJIntent.JavaClass.ACTION_MAIN);
intent:= intent.addCategory(TJIntent.JavaClass.CATEGORY_LAUNCHER);
list:=pm.queryIntentActivities(intent,TJPackageManager.JavaClass.PERMISSION_GRANTED);
ShowMessage(IntToStr(list.size));
end;
How i can use Jlist associated with Jresolverinfo in delphi? because in java is declared like this: List < ResolveInfo > or how i can convert this for(ResolveInfo mtemp:pkgAppsList)
in delphi
UPDATE: Also the size of the list
is always 0 but it's not possible. What can be the problem?
Upvotes: 1
Views: 876
Reputation: 598029
Try something like this:
var
PM: JPackageManager;
mainIntent: JIntent;
LaunchIntent: JIntent;
pkgAppsList: JList;
ri: JResolveInfo;
iter: JIterator;
midlist := TStringList;
begin
PM := SharedActivityContext.getPackageManager;
mainIntent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_MAIN, nil);
mainIntent.addCategory(TJIntent.JavaClass.CATEGORY_LAUNCHER);
pkgAppsList := PM.queryIntentActivities(mainIntent, 0);
midlist := TStringList;
iter := pkgAppsList.iterator;
while iter.hasNext do
begin
ri := TJResolveInfo.Wrap((iter.next as ILocalObject).GetObjectID);
mIdList.Add(ri.activityInfo.applicationInfo.packageName);
end;
LaunchIntent := PM.getLaunchIntentForPackage(mIdList[2]);
SharedActivityContext.startActivity( LaunchIntent )
end;
Upvotes: 2