[Nook Touch General] LastSilmaril:
OK, so I learnt a little bit about intents and such, and I'm still not quite sure why 'com.bn.intent.action.shop' is not associated with that app. It is listed in the AndroidManifest.xml in the same section between 1.1.0/1.1.2 and 1.1.5 - under a 'receiver' block:

<receiver android:name=".receiver.ShopReceiver" android:exported="true">
<intent-filter>
<action android:name="com.bn.nook.shop.action.show.instore.timedout.dialog" />
</intent-filter>
<intent-filter>
<action android:name="com.bn.nook.download.DOWNLOAD_COMPLETED" />
</intent-filter>
<intent-filter>
<action android:name="com.bn.nook.shop.action.fetch" />
</intent-filter>
<intent-filter>
<action android:name="com.bn.nook.intent.action.purchase.complete" />
</intent-filter>
<intent-filter>
<action android:name="com.bn.nook.intent.action.sync.event" />
</intent-filter>
<intent-filter>
<action android:name="com.nook.intent.action.ACTION_BN_INSTORE_SESSION_STATE_CHANGE" />
</intent-filter>
<intent-filter>
[B] <action android:name="com.bn.intent.action.shop" />
[/B] </intent-filter>
</receiver>

I compared this with the AndroidManifest in the Library and Settings apk, it seems like the intent listed in BNGQNB onClick() and in XorUtils launchButton() aren't listed under a receiver block, but under an Activity block. Of course, those buttons work just fine.

I noticed that when assigning the Shop app to the Shop button with NookTouchTools, that the 'command' given to the app was MainActivity:

I/ActivityManager( 784): Starting activity: Intent { act=android.intent.action.MAIN flg=0x14400000 cmp=com.bn.nook.shop/.MainActivity }

And then noticed that the MainActivity block had another intent besides action.MAIN associated with it that triggers it:

<activity android:name=".MainActivity" android:launchMode="singleTask" android:screenOrientation="portrait" android:alwaysRetainTaskState="true" android:windowSoftInputMode="stateHidden">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
[B] <action android:name="com.bn.nook.shop.action.storefront" />
[/B] <category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<meta-data android:name="quicknav.view" android:value="true" />
</activity>

So I dropped this in place of com.bn.intent.action.shop in the relevant line of the XorUtils launchButton() method, smalied and pushed over a new jar. When clicking the Shop button, it now DOES open the shop...however, it only goes to the shop *HOME*. If you navigate to somewhere inside the shop, then switch to another app, and then switch back to the Shop via quicknav, the Shop app will start at the Shop home screen. The same thing happens, of course, with our little workaround - it sends you to the Shop homescreen, not to the last place you were in the shop. I'm actually not quite sure if this is the default behavior of the Shop button or not, but I suspect that it isn't. (EDIT: Reverted back to stock services.jar and can confirm that hitting Shop is supposed to take you back to where you were in the Shop, not to the Shop's homescreen.)

I can put up the fixed jar but honestly would rather ask for some advice from say Renate or someone, who could maybe explain why an intent that is listed under a receiver block wouldn't get successfully associated with and executed as an action, or why it would work with the stock onClick() method but not with XorUtils' launchButton() as I have made it. That way we'll be treating the cause, instead of the symptoms...