2017-01-10 11 views
0

Я создаю пусковую установку в android. Позвольте мне объяснить вам ситуацию.Android, создающий пусковую установку, но не в состоянии запускать другие приложения

Случай 1: Когда я запускаю приложение myLauncher из студии Android, он сначала запускается как обычное приложение. И затем я открываю ящик приложения в myLauncher и нажимаю на значок, чтобы запустить другое приложение, он отлично работает. После выхода из приложения я снова вернусь к myLauncher, как это было в Android-стеке. Это поведение, которое я хочу.

Случай 2: После того, как приложение установлено на андроид, я нажимаю кнопку «домой», чтобы выбрать пусковую установку по умолчанию, а затем выберите myLauncher в качестве значения по умолчанию. Он открывается, а затем я открываю ящик приложения в myLauncher. При нажатии любой иконки, чтобы запустить другое приложение, оно не работает.

Хотя я работаю в кордове, но я не думаю, что проблема связана с кордорой, поскольку все работает, когда myLauncher не работает как пусковая установка.

Intent launchIntent = cordova.getActivity().getApplicationContext().getPackageManager().getLaunchIntentForPackage(args.get(0).toString()); 
cordova.getActivity().getApplicationContext().startActivity(launchIntent); 

Logcat для случая 1:

01-10 11:37:57.526 1555 1638 I ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 pkg=com.android.dialer cmp=com.android.dialer/.DialtactsActivity} from uid 10057 on display 0 
01-10 11:37:57.526 1555 1638 W ActivityManager: Activity is launching as a new task, so cancelling activity result. 
01-10 11:37:57.536 1555 1638 D   : HostConnection::get() New Host Connection established 0x7f1132abef40, tid 1638 
01-10 11:37:57.545 1236 1236 E EGL_emulation: tid 1236: eglCreateSyncKHR(1370): error 0x3004 (EGL_BAD_ATTRIBUTE) 
01-10 11:37:57.610 3983 3983 D CordovaInterfaceImpl: Sending activity result to plugin 
01-10 11:37:57.612 1555 1638 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) 
01-10 11:37:57.629 3983 4017 W PluginManager: THREAD WARNING: exec() call to Apps.start blocked the main thread for 104ms. Plugin should use CordovaInterface.getThreadPool(). 
01-10 11:37:58.025 1555 1575 I ActivityManager: Displayed com.android.dialer/.DialtactsActivity: +333ms 
01-10 11:37:58.308 3983 3983 I Choreographer: Skipped 30 frames! The application may be doing too much work on its main thread. 
01-10 11:37:58.464 3983 4025 E Surface : getSlotFromBufferLocked: unknown buffer: 0x7f11433b9d90 

Logcat для случая 2:

01-10 11:34:15.739 1555 1803 I ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 pkg=com.android.dialer cmp=com.android.dialer/.DialtactsActivity} from uid 10057 on display 0 
01-10 11:34:15.739 1555 1803 W ActivityManager: Activity is launching as a new task, so cancelling activity result. 
01-10 11:34:15.791 1555 1575 D   : HostConnection::get() New Host Connection established 0x7f1132cba040, tid 1575 
01-10 11:34:16.463 1555 1575 D gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) 
01-10 11:34:16.566 1555 1638 W InputMethodManagerService: Window already focused, ignoring focus gain of: [email protected] attribute=null, token = [email protected] 
+0

, когда вы нажимаете на значки, никаких действий не происходит или просто открывается и внезапно закрывается? –

+0

Никаких действий не происходит. –

+0

распечатайте пакет за один раз, который вы запустите, и дайте нам знать. – Piyush

ответ

0

Я сделал два изменения и он работает сейчас

В манифесте я добавил android:launchMode="singleTop" к активности и запуску намерения, которые я ввел в runnable.

 cordova.getThreadPool().execute(new Runnable() { 
      @Override 
      public void run() { 
       try { 
        Intent launchIntent = cordova.getActivity().getApplicationContext().getPackageManager().getLaunchIntentForPackage(args.get(0).toString()); 
        launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP); 
        cordova.getActivity().getApplicationContext().startActivity(launchIntent); 
       } catch (JSONException exp) { 
        Log.e("ERR", "JSON Error"); 
       } catch (Exception exp) { 
        Log.e("ERR", "Other Error: " + exp.getMessage()); 
       } 

      } 

Обновление: Нет, это не работает. Должно быть, перепутали апки. Если я очень быстро нажимаю значок приложения, это приложение открывается и закрывается мгновенно.

 Смежные вопросы

  • Нет связанных вопросов^_^