【问题标题】:delphi xe5 intalled packagedelphi xe5 安装包
【发布时间】:2013-11-08 15:20:57
【问题描述】:

我有这个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 )

我正在尝试在 delphi 中使用它,但我不知道如何使用 Jlist(in delphi) 而不是 List (java),因为函数“queryIntentActivities”的结果是一个 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 或者我如何转换这个for(ResolveInfo mtemp:pkgAppsList) 在德尔福中

更新:the size of the list 也始终为 0,但这是不可能的。可能是什么问题?

【问题讨论】:

    标签: java android delphi delphi-xe5


    【解决方案1】:

    试试这样的:

    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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-13
      • 2014-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多