1

私はこのJavaコードを持っています:

        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 )

私はこれをデルファイで使用しようとしていますが、関数 "queryIntentActivities" の結果が JList であるため、List < ResolveInfo > (java) の代わりに 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;

DelphiでJresolverinfoに関連付けられたJlistを使用するにはどうすればよいですか? Javaでは次のように宣言されているため: List < ResolveInfo >for(ResolveInfo mtemp:pkgAppsList)またはデルファイでこれ を変換する方法

更新: またthe size of the list、常に 0 ですが、それは不可能です。何が問題になる可能性がありますか?

4

1 に答える 1

2

次のようなことを試してください:

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;
于 2013-11-12T02:13:42.960 に答える