Приложение вътре в приложение

Възможно ли е да стартирате приложение от друго приложение? Това, което искам да направя, е да напиша приложение, което ви позволява да изберете приложение, което да стартирате, и след това показва дейностите на това приложение в изглед.

Така че в пейзажен режим трябва да изглежда нещо подобно:

въведете описание на изображението тук

Идеята зад това е:

Искам да мога да стартирам и изпълнявам дейност на трета страна до моята собствена дейност и искам да мога да създавам отделни макроси с моята дейност, които контролират дейността на трета страна.

По принцип нещо подобно:

  • Започнете дейност на трета страна от моето приложение
  • Започнете макро запис
  • Направете нещо в дейността на трета страна
  • Спрете макро записа
  • Използвайте макро, когато пожелаете

И така, как мога да стартирам и контролирам друга дейност от собствената си дейност?


person PKlumpp    schedule 26.05.2014    source източник
comment
Не е възможно. Опитайте се да използвате фрагменти developer.android.com/training/basics/fragments/index. html   -  person resource8218    schedule 26.05.2014
comment
добре, ако казвате, че не е възможно, защо фрагментите ще ми помогнат?   -  person PKlumpp    schedule 26.05.2014
comment
Възможно е да стартирате друго приложение от вашето собствено, но не и в изглед.   -  person Braj    schedule 26.05.2014
comment
добре, това е страхотен подход, благодаря! сега изритам идеята за гледка от главата си. в коя посока е моят път?   -  person PKlumpp    schedule 26.05.2014
comment
Фрагмент отляво с меню (например статичен списък с различни опции) и дясна страна - фрагменти с динамична промяна с различна информация.   -  person resource8218    schedule 26.05.2014
comment
Имате ли контрол над тези други приложения? какво искате приложението да може да прави? защо приложението трябва да е вътре в приложението ви, искате ли да видите менюто или просто да се върнете към него? Можете ли да опишете малко действителния случай на употреба?   -  person Nanne    schedule 28.05.2014
comment
Мога да стартирам приложение в списък. Създадох нещо подобно, но не съм сигурен дали сме на една и съща честота.   -  person The One    schedule 04.06.2014


Отговори (4)


Нерутван:
За съжаление това, което искате да постигнете, не изглежда възможно без руутване на телефона, защото можете да взаимодействате с други приложения само чрез намерения. Тъй като разработчиците решават как техните приложения реагират на конкретни намерения, създаването на макроси по този начин е почти невъзможно.

С руутнати телефони:

  1. Може да искате да създадете списък с всички инсталирани приложения, които можете да използвате

    getPackageManager().getInstalledApplications(PackageManager.GET_META_DATA);
    

    за извличане на списък с всички инсталирани приложения.

  2. Ако потребителят сега избере приложение, стартирайте го чрез намерение и създайте системно наслагване, за да получите всички събития при докосване/клавиши (и оставете потребителя да спре макроса). Можете да намерите начин да направите това тук. Съхранявайте x/y-стойностите на събитията при докосване.
  3. Можете да пресъздадете събитията с помощта на MotionEvent#obtain.
  4. Сега идва частта, в която се нуждаете от руутнат телефон (разрешението INJECT_EVENTS). Стартирайте приложението и инжектирайте събитията, така че вашият макрос да се изпълни. Примерен код:

    Instrumentation m_Instrumentation = new Instrumentation();
    m_Instrumentation.sendPointerSync(motionEvent);
    

    Можете да намерите повече информация относно инжектирането (също ключови събития) тук.

  5. Ако имате нужда от помощ, за да компилирате приложението си, тези 2 връзки ще ви помогнат: Как да компилираме приложение за Android със системни разрешения, разрешение INJECT_EVENTS за Android

person Manuel Allenspach    schedule 02.06.2014

Не е възможно да стартирате приложение в View, но можете да стартирате приложение от вашето приложение:

 Intent i = getPackageManager().getLaunchIntentForPackage("com.package.ofapp");
 startActivity(i);

//РЕДАКТИРАНЕ на вашия актуализиран въпрос:

След стартиране на дейността от горния код, един от начините да стартирате/спирате макроса по всяко време в новото приложение би бил да създадете малък наслагван изглед в горната част на екрана.

Това наслагване ще бъде върху ВСИЧКИ дейности.

Разгледайте следната връзка: Създаване на системен прозорец с наслагване (винаги отгоре)

Можете да напишете код за стартиране на макроса при натискане на View и след това, ако бутонът е натиснат веднъж и потребителят го натисне отново, спрете макроса. Това ще бъде в метода onTouchEvent().

person MJ93    schedule 28.05.2014

Да, мисля, че е възможно, тъй като приложение, наречено плаващи приложения, прави това (БЕЗ ROOT)

Използвайки само някои adb команди

https://play.google.com/store/apps/details?id=com.lwi.android.flapps

person Biswajit    schedule 24.03.2019
comment
Моля, не пишете отговори само с връзки. - person JJJ; 24.03.2019

Да, възможно е, ако използвате Intents. Те ви позволяват да се движите между екрани и да стартирате друга различна функционалност в същото приложение. посетете coursera за повече уроци относно намеренията

person Tumi    schedule 04.06.2014