파이어몽키 개발자 커뮤니티 네이버 카페(http://cafe.naver.com/delphifmx)에서 가을이다 님이 올려주신 내용입니다.
(RAD Studio 모바일(멀티-디바이스) 개발에 관심이 있으시면 반드시 가입해야 하는 까페입니다. 가입하세요.)
안드로이드 기기에 설치된 앱의 목록을 표시하고 앱을 실행하는 예제입니다.
uses Androidapi.JNI.GraphicsContentViewText, Androidapi.JNI.JavaTypes, FMX.Helpers.Android, AndroidApi.Helpers, Androidapi.JNIBridge; // 중략 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.Create; iter := pkgAppsList.iterator; while iter.hasNext do begin ri := TJResolveInfo.Wrap((iter.next as ILocalObject).GetObjectID); mIdList.Add(JStringToString(ri.activityInfo.applicationInfo.packageName)); end; LaunchIntent := PM.getLaunchIntentForPackage(StringToJString(mIdList[2])); // 해당을 실행하려면 아래처럼,.., // SharedActivityContext.startActivity( LaunchIntent ) showmessage( mIdList.Text ); end;
댓글에서 수달님 께서 안드로이드 2.3.4 버전에서 정상동작을 확인하셨고, uses 절을 알려주셔서 포함했습니다.