In your example, you are calling SnapStartCustom and not pyMobileSnapstart. What have you customized in that activity?
In your example, you have the harness set as editable (readOnly=false), but you do not specify the clipboard page that you want the harness rendered against. Typically, top-level harnesses are rendered against system pages, such as pyPortal (Data-Portal). Assuming you first called &Action=openWorkByHandle, and now wish to make a second call to display the harness against the work object, you would want to add &pzPrimaryPageName=pyWorkPage to the URL calling showHarness.
However, my recommendation if you want to show a harness rendered against the work object is to instead modify or circumstance the Review harness for your application to display the content you wish to be displayed in the mobile mashup, and then just use the &Action=openWorkByHandle to open the work object and display the Review harness.
In your example, you are redirecting to Data-Portal.ShowDesktop rather than calling it directly. This will cause an HTTP 303 redirect response that only contains the pyActivity parameter to be passed, dropping all other parameters. I recommend returning to calling ShowDesktop directly, passing all parameters.
Also, the scope of the activity at this point is pyPortal (Data-Portal). Trying to render a work harness meant to be used against a work page might yield unwanted results. I recommend refactoring our portal to Data-Portal if it is not meant to be used as a view of a work object.