Telegram for Android does not seem to support `launchMode=singleTask` for file handling apps

0

I have an Android react-native app, which should be able to open Json files from messaging apps, but always in the same task. There should never be two instances of the application running. So I have set launchMode="singleTask". Here is a snippet of the manifest:

 <activity
    android:name=".MainActivity"
    ...
    android:launchMode="singleTask"
    <intent-filter>
      ...
    </intent-filter>
    <intent-filter>
      <action android:name="android.intent.action.VIEW" />
      <category android:name="android.intent.category.DEFAULT" />
      <data
         android:scheme="content"
         android:host="*"
         android:pathPattern=".*\\.json"
         android:mimeType="*/*"
       />
    </intent-filter>
  />

This works in all applications I tested, except Telegram. Telegram opens a new activity inside its own task. This is shown in the output of adb shell dumpsys activity activities, there are two separate activities for com.myApp and one is in the Telegram Task:

ACTIVITY MANAGER ACTIVITIES (dumpsys activity activities)
Display #0 (activities from top to bottom):
  Stack #1:
  mFullscreen=true
  mBounds=null
    Task id #10571
    mFullscreen=true
    mBounds=null
    mMinWidth=-1
    mMinHeight=-1
    mLastNonFullscreenBounds=null
    * TaskRecord{3bd908f #10571 A=org.telegram.messenger U=0 StackId=1 sz=2}
      userId=0 multiLaunchId=0 effectiveUid=u0a118 mCallingUid=u0a67 mUserSetupComplete=true mCallingPackage=com.huawei.android.launcher
      affinity=org.telegram.messenger
      intent={act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=org.telegram.messenger/org.telegram.ui.LaunchActivity}
      realActivity=org.telegram.messenger/org.telegram.ui.LaunchActivity
      autoRemoveRecents=false isPersistable=true numFullscreen=2 taskType=0 mTaskToReturnTo=1
      rootWasReset=true mNeverRelinquishIdentity=true mReuseTask=false mLockTaskAuth=LOCK_TASK_AUTH_PINNABLE
      Activities=[ActivityRecord{75c4f1c u0 org.telegram.messenger/org.telegram.ui.LaunchActivity t10571}, ActivityRecord{b96c564 u0 com.myApp.debug/com.myApp.MainActivity t10571}]
      askedCompatMode=false inRecents=true isAvailable=true
      lastThumbnail=null lastThumbnailFile=/data/system_ce/0/recent_images/10571_task_thumbnail.png
      stackId=1
      hasBeenVisible=true mResizeMode=RESIZE_MODE_RESIZEABLE isResizeable=true firstActiveTime=1556706462633 lastActiveTime=1556706462633 (inactive for 250s)
      * Hist #1: ActivityRecord{b96c564 u0 com.myApp.debug/com.myApp.MainActivity t10571}
          packageName=com.myApp.debug processName=com.myApp.debug
          launchedFromUid=10118 launchedFromPackage=org.telegram.messenger userId=0 multiLaunchId=0
          app=ProcessRecord{d758be5 11733:com.myApp.debug/u0a187}
          Intent { act=android.intent.action.VIEW dat=content://org.telegram.messenger.provider/media/Telegram/Telegram Documents/4_5904235303509427798.json typ=application/octet-stream flg=0x13000001 hwFlg=0x400 cmp=com.myApp.debug/com.myApp.MainActivity }
          frontOfTask=false task=TaskRecord{3bd908f #10571 A=org.telegram.messenger U=0 StackId=1 sz=2}
          taskAffinity=com.myApp.debug
          realActivity=com.myApp.debug/com.myApp.MainActivity
          baseDir=/data/app/com.myApp.debug-2/base.apk
          dataDir=/data/user/0/com.myApp.debug
          stateNotNeeded=false componentSpecified=true mActivityType=0
          compat={480dpi} labelRes=0x7f0b002d icon=0x7f0a0000 theme=0x7f0c0006
          config={1.0 222mcc50mnc [it_IT] ldltr sw360dp w360dp h580dp 480dpi nrml port finger -keyb/v/h -nav/h suim:4 s.6}
          taskConfigOverride={1.0 ?mcc?mnc ?localeList ?layoutDir ?swdp ?wdp ?hdp ?density ?lsize ?long ?orien ?uimode ?night ?touch ?keyb/?/? ?nav/?}
          resultTo=ActivityRecord{75c4f1c u0 org.telegram.messenger/org.telegram.ui.LaunchActivity t10571} resultWho=null resultCode=500
          taskDescription: iconFilename=null label="null" color=fff5f5f5
          readUriPermissions={UriPermission{36a52f7 0 @ content://org.telegram.messenger.provider/media/Telegram/Telegram%20Documents/4_5904235303509427798.json}}
          launchFailed=false launchCount=1 lastLaunchTime=-4m10s762ms
          haveState=false icicle=null
          state=RESUMED stopped=false delayedResume=false finishing=false
          keysPaused=false inHistory=true visible=true sleeping=false idle=true mStartingWindowState=STARTING_WINDOW_NOT_SHOWN
          fullscreen=true noDisplay=false immersive=false launchMode=2
          frozenBeforeDestroy=false forceNewConfig=false
          mActivityType=APPLICATION_ACTIVITY_TYPE
          waitingVisible=false nowVisible=true lastVisibleTime=-4m10s504ms
          resizeMode=RESIZE_MODE_RESIZEABLE
      * Hist #0: ActivityRecord{75c4f1c u0 org.telegram.messenger/org.telegram.ui.LaunchActivity t10571}
          packageName=org.telegram.messenger processName=org.telegram.messenger
          launchedFromUid=10067 launchedFromPackage=com.huawei.android.launcher userId=0 multiLaunchId=0
          app=ProcessRecord{8b7f51e 7395:org.telegram.messenger/u0a118}
          Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=org.telegram.messenger/org.telegram.ui.LaunchActivity bnds=[276,370][540,656] (has extras) }
          frontOfTask=true task=TaskRecord{3bd908f #10571 A=org.telegram.messenger U=0 StackId=1 sz=2}
          taskAffinity=org.telegram.messenger
          realActivity=org.telegram.messenger/org.telegram.ui.LaunchActivity
          baseDir=/data/app/org.telegram.messenger-2/base.apk
          dataDir=/data/user/0/org.telegram.messenger
          stateNotNeeded=false componentSpecified=true mActivityType=0
          compat={480dpi} labelRes=0x7f0c00e0 icon=0x7f0700c0 theme=0x7f0d0015
          config={1.0 222mcc50mnc [it_IT] ldltr sw360dp w360dp h580dp 480dpi nrml port finger -keyb/v/h -nav/h suim:4 s.6}
          taskConfigOverride={1.0 ?mcc?mnc ?localeList ?layoutDir ?swdp ?wdp ?hdp ?density ?lsize ?long ?orien ?uimode ?night ?touch ?keyb/?/? ?nav/?}
          taskDescription: iconFilename=null label="null" color=ff527da3
          launchFailed=false launchCount=0 lastLaunchTime=-4m21s505ms
          haveState=true icicle=Bundle[mParcelledData.dataSize=1212]
          state=STOPPED stopped=true delayedResume=false finishing=false
          keysPaused=false inHistory=true visible=false sleeping=false idle=true mStartingWindowState=STARTING_WINDOW_SHOWN
          fullscreen=true noDisplay=false immersive=false launchMode=2
          frozenBeforeDestroy=false forceNewConfig=false
          mActivityType=APPLICATION_ACTIVITY_TYPE
          waitingVisible=false nowVisible=false lastVisibleTime=-4m20s756ms
          connections=[]
          resizeMode=RESIZE_MODE_RESIZEABLE
    Task id #10570
    mFullscreen=true
    mBounds=null
    mMinWidth=-1
    mMinHeight=-1
    mLastNonFullscreenBounds=null
    * TaskRecord{575db75 #10570 A=com.myApp.debug U=0 StackId=1 sz=1}
      userId=0 multiLaunchId=0 effectiveUid=u0a187 mCallingUid=2000 mUserSetupComplete=true mCallingPackage=null
      affinity=com.myApp.debug
      intent={flg=0x10000000 cmp=com.myApp.debug/com.myApp.MainActivity}
      realActivity=com.myApp.debug/com.myApp.MainActivity
      autoRemoveRecents=false isPersistable=true numFullscreen=1 taskType=0 mTaskToReturnTo=0
      rootWasReset=false mNeverRelinquishIdentity=true mReuseTask=false mLockTaskAuth=LOCK_TASK_AUTH_PINNABLE
      Activities=[ActivityRecord{d8a470a u0 com.myApp.debug/com.myApp.MainActivity t10570}]
      askedCompatMode=false inRecents=true isAvailable=true
      lastThumbnail=android.graphics.Bitmap@28bc018 lastThumbnailFile=/data/system_ce/0/recent_images/10570_task_thumbnail.png
      stackId=1
      hasBeenVisible=true mResizeMode=RESIZE_MODE_RESIZEABLE isResizeable=true firstActiveTime=1556706445344 lastActiveTime=1556706445344 (inactive for 268s)
      * Hist #0: ActivityRecord{d8a470a u0 com.myApp.debug/com.myApp.MainActivity t10570}
          packageName=com.myApp.debug processName=com.myApp.debug
          launchedFromUid=2000 launchedFromPackage=null userId=0 multiLaunchId=0
          app=ProcessRecord{d758be5 11733:com.myApp.debug/u0a187}
          Intent { flg=0x10000000 cmp=com.myApp.debug/com.myApp.MainActivity }
          frontOfTask=true task=TaskRecord{575db75 #10570 A=com.myApp.debug U=0 StackId=1 sz=1}
          taskAffinity=com.myApp.debug
          realActivity=com.myApp.debug/com.myApp.MainActivity
          baseDir=/data/app/com.myApp.debug-2/base.apk
          dataDir=/data/user/0/com.myApp.debug
          stateNotNeeded=false componentSpecified=true mActivityType=0
          compat={480dpi} labelRes=0x7f0b002d icon=0x7f0a0000 theme=0x7f0c0006
          config={1.0 222mcc50mnc [it_IT] ldltr sw360dp w360dp h580dp 480dpi nrml port finger -keyb/v/h -nav/h suim:4 s.6}
          taskConfigOverride={1.0 ?mcc?mnc ?localeList ?layoutDir ?swdp ?wdp ?hdp ?density ?lsize ?long ?orien ?uimode ?night ?touch ?keyb/?/? ?nav/?}
          taskDescription: iconFilename=null label="null" color=fff5f5f5
          launchFailed=false launchCount=0 lastLaunchTime=-17m43s658ms
          haveState=true icicle=Bundle[mParcelledData.dataSize=2808]
          state=STOPPED stopped=true delayedResume=false finishing=false
          keysPaused=false inHistory=true visible=false sleeping=false idle=true mStartingWindowState=STARTING_WINDOW_SHOWN
          fullscreen=true noDisplay=false immersive=false launchMode=2
          frozenBeforeDestroy=false forceNewConfig=false
          mActivityType=APPLICATION_ACTIVITY_TYPE
          waitingVisible=false nowVisible=false lastVisibleTime=-17m42s676ms
          resizeMode=RESIZE_MODE_RESIZEABLE
    Running activities (most recent first):
      TaskRecord{3bd908f #10571 A=org.telegram.messenger U=0 StackId=1 sz=2}
        Run #6: ActivityRecord{b96c564 u0 com.myApp.debug/com.myApp.MainActivity t10571}
        Run #5: ActivityRecord{75c4f1c u0 org.telegram.messenger/org.telegram.ui.LaunchActivity t10571}
      TaskRecord{575db75 #10570 A=com.myApp.debug U=0 StackId=1 sz=1}
        Run #4: ActivityRecord{d8a470a u0 com.myApp.debug/com.myApp.MainActivity t10570}

Again, this does not happen in other messengers (Signal, Whatsapp), consistently with the singleTask launch mode. Has anyone experienced a similar problem? Is there a workaround?

android
android-intent
android-activity
telegram
asked on Stack Overflow Apr 30, 2019 by Federico Squartini • edited May 2, 2019 by Federico Squartini

0 Answers

Nobody has answered this question yet.


User contributions licensed under CC BY-SA 3.0