Best practices for integrated (context-sensitive) help?

by Nathan » Fri, 23 Apr 2010 00:56:53 GMT


Sponsored Links
 What are the best practices people have used to integrate help/tips in
their application?

One way I can think of is having html snippets in resources or assets
- perhaps as html files - maybe as formatted strings. However, I think
it would break down once an html file linked to another html file or
an image or icon.

I'm sure some of you have apps that are so wonderfully intuitive that
they don't need any help.  And I admire that. But I'm not making that
assumption for my app.

Thanks for any tips.

Nathan

--



Best practices for integrated (context-sensitive) help?

by Nathan » Fri, 23 Apr 2010 04:57:33 GMT


 No ideas? I thought someone would have done this by now.

I've tried searching but the word 'help' is so common that a search
didn't help much.


Nathan



>


Sponsored Links


Best practices for integrated (context-sensitive) help?

by krox » Fri, 23 Apr 2010 05:10:06 GMT


 Hi!

Good question, haven't really thought about it earlier but my approach
would probably be to have small buttons with a question-mark icon and
when clicked a Toast-message would display. Or perhaps using a
(Alert)Dialog instead of a Toast if a more advanced help-message is to
be displayed.

/Erik




> >



Best practices for integrated (context-sensitive) help?

by ~ TreKing » Fri, 23 Apr 2010 07:11:17 GMT


 




Please wait more than 4 hours before bumping your own thread - especially in
the middle of a work day - as many people won't have a chance to even look
at it let alone have the time to respond that quickly.

-------------------------------------------------------------------------------------------------
TreKing - Chicago transit tracking app for Android-powered devices
 http://sites.google.com/site/rezmobileapps/treking 

--



Best practices for integrated (context-sensitive) help?

by Michael Thomas » Fri, 23 Apr 2010 07:19:30 GMT


 

One way I can think of is having html snippets in resources or assets - perhaps as html files - maybe as formatted strings.
This sounds lovely. Or, just host the help online, linking to it via an ACTION_VIEW Intent on your URL. I'm not sure if the HTML5 offline stuff works with the Android browser, but if it does, use that to allow your help to be usable even when there's no connection. IMHO, this will be the long-term direction for this sort of thing, as it gives you easy publishing, easy updates independent of the app itself, yet still isn't completely busted when the user is offline.
Something that I've done is bundled stuff together as a web widget, and use that to drastically cut down on load times -- it's not for offline use, but the idea is the same. One thing that might be helpful with my approach was that I just to built the pages under a normal web server and maintain them that way. I then just use wget with some of its nice archiving facilities to suck them all back in, and zip the proceeds. If you need to maintain it as a web accessible site too, it's a big win since there's essentially only one "source tree". Works great for css and js and sprites too (which was really my big motivation) . Mike
Or, write your help in the form of an EPUB document and make it available, so those with an EPUB reader (e.g., FBReaderJ) can use it. Or, write your help in the form of a PDF document and make it available, so those with a PDF viewer (e.g., Documents To Go) can use it. And see if they have a referral program for sales, so you can make a bit of money on people who buy that app to view your help. Or, don't worry about on-device help due to form-factor issues and just provide support via your Web site.
However, I think it would break down once an html file linked to another html file or an image or icon.
Worst-case scenario: create a content provider to serve your help files.
--



Other Threads

1. Browser Crash on TI's AM37X board

Hi,

I have been trying out Android Port for AM37X board (from rowboat -
 http://www.***.com/ ).
I have done the required proxy settings for the Android Browser to
work.

When the browser starts up it loads google page and the browser
suddenly crashes.
I changed the browser home page to a different site[yahoo.com], It
loads the page correctly.
But whenever I point the browser to google.com, It crashes.

location based data from Android and the board does not have support
for location/gps.

I tried disabling Enable Location feature in browser settings, still
browser crashes on loading google.com.

Please help me to fix the browser/Android configuration so it would
not crash on loading google.com etc.

Logcat Details
-------------------------------------------




I/ActivityManager(  899): Starting activity: Intent
{ act=android.intent.action.MAIN
cat=[android.intent.category.LAUNCHER] flg=0x10200000
cmp=com.android.browser/.BrowserActivity } I/ActivityManager(  899):
Start proc com.android.browser for activity
com.android.browser/.BrowserActivity: pid=5499 uid=10016 gids={3003,
1015} I/ActivityThread( 5499): Publishing provider browser:
com.android.browser.BrowserProvider
I/ActivityManager(  899): Displayed activity
com.android.browser/.BrowserActivity: 1101 ms (total 1101 ms) D/
dalvikvm( 5499): GC_FOR_MALLOC freed 3691 objects / 221288 bytes in
41ms W/dalvikvm( 5499): JNI WARNING: JNI method called with exception
raised
W/dalvikvm( 5499):              in Landroid/webkit/
JWebCoreJavaBridge;.sharedTimerFired ()V (NewLocalRef)
W/dalvikvm( 5499): Pending exception is:
I/dalvikvm( 5499): Ljava/lang/IllegalArgumentException;: provider=gps
I/dalvikvm( 5499):      at android.os.Parcel.readException(Parcel.java:
1251)
I/dalvikvm( 5499):      at android.os.Parcel.readException(Parcel.java:
1235)
I/dalvikvm( 5499):      at android.location.ILocationManager$Stub
$Proxy.requestLocationUpdates(ILocationManager.java:516)
I/dalvikvm( 5499):      at
android.location.LocationManager._requestLocationUpdates(LocationManager.java:
711)
I/dalvikvm( 5499):      at
android.location.LocationManager.requestLocationUpdates(LocationManager.java:
630)
I/dalvikvm( 5499):      at
android.webkit.GeolocationService.registerForLocationUpdates(GeolocationService.java:
162)
I/dalvikvm( 5499):      at
android.webkit.GeolocationService.start(GeolocationService.java:66)
I/dalvikvm( 5499):      at
android.webkit.JWebCoreJavaBridge.sharedTimerFired(Native Method)
I/dalvikvm( 5499):      at
android.webkit.JWebCoreJavaBridge.fireSharedTimer(JWebCoreJavaBridge.java:
88)
I/dalvikvm( 5499):      at
android.webkit.JWebCoreJavaBridge.handleMessage(JWebCoreJavaBridge.java:
105)
I/dalvikvm( 5499):      at android.os.Handler.dispatchMessage(Handler.java:
99)
I/dalvikvm( 5499):      at android.os.Looper.loop(Looper.java:123)
I/dalvikvm( 5499):      at android.webkit.WebViewCore
$WebCoreThread.run(WebViewCore.java:621)
I/dalvikvm( 5499):      at java.lang.Thread.run(Thread.java:1096)
I/dalvikvm( 5499): "WebViewCoreThread" prio=5 tid=11 NATIVE
I/dalvikvm( 5499):   | group="main" sCount=0 dsCount=0 s=N
obj=0x4402bbd0 self=0x2538d0
I/dalvikvm( 5499):   | sysTid=5511 nice=0 sched=0/0 cgrp=unknown
handle=2439696
I/dalvikvm( 5499):   at
android.webkit.JWebCoreJavaBridge.sharedTimerFired(Native Method)
I/dalvikvm( 5499):   at
android.webkit.JWebCoreJavaBridge.fireSharedTimer(JWebCoreJavaBridge.java:
88)
I/dalvikvm( 5499):   at
android.webkit.JWebCoreJavaBridge.handleMessage(JWebCoreJavaBridge.java:
105)
I/dalvikvm( 5499):   at
android.os.Handler.dispatchMessage(Handler.java:99)
I/dalvikvm( 5499):   at android.os.Looper.loop(Looper.java:123)
I/dalvikvm( 5499):   at android.webkit.WebViewCore
$WebCoreThread.run(WebViewCore.java:621)
I/dalvikvm( 5499):   at java.lang.Thread.run(Thread.java:1096)
I/dalvikvm( 5499):
E/dalvikvm( 5499): VM aborting
I/DEBUG   ( 5454): *** *** *** *** *** *** *** *** *** *** *** *** ***
*** *** ***
I/DEBUG   ( 5454): Build fingerprint: 'TI/omap3evm/omap3evm/omap3evm:
2.2/MASTER/eng.pundiramit.20100914.144218:eng/test-keys'
I/DEBUG   ( 5454): pid: 5499, tid: 5511  >>> com.android.browser <<<
I/DEBUG   ( 5454): signal 11 (SIGSEGV), fault addr deadd00d
I/DEBUG   ( 5454):  r0 00000026  r1 afd14629  r2 afd14629  r3 00000000
I/DEBUG   ( 5454):  r4 802a13f4  r5 802a13f4  r6 00000000  r7 00000000
I/DEBUG   ( 5454):  r8 458f4b68  r9 428c6f1c  10 428c6f04  fp 458f4ed8
I/DEBUG   ( 5454):  ip deadd00d  sp 458f4a68  lr afd15673  pc
80242078  cpsr 20000030
I/DEBUG   ( 5454):  d0  74726f6261204d69  d1  437765695662656e
I/DEBUG   ( 5454):  d2  4362655724657267  d3  616572685465720a
I/DEBUG   ( 5454):  d4  0000000000000000  d5  4010000000000000
I/DEBUG   ( 5454):  d6  c010000000000000  d7  00020ee93f800000
I/DEBUG   ( 5454):  d8  ffffffffffffffb1  d9  41cc36a867871c08
I/DEBUG   ( 5454):  d10 0000000000000000  d11 0000000000000000
I/DEBUG   ( 5454):  d12 0000000000000000  d13 0000000000000000
I/DEBUG   ( 5454):  d14 0000000000000000  d15 0000000000000000
I/DEBUG   ( 5454):  d16 ffffffffffffffb1  d17 3fc1440af1cb89d7
I/DEBUG   ( 5454):  d18 4100774800000000  d19 c010000000000000
I/DEBUG   ( 5454):  d20 0000000000000000  d21 0000000000000000
I/DEBUG   ( 5454):  d22 0000000000000000  d23 4014000000000000
I/DEBUG   ( 5454):  d24 c014000000000000  d25 0000000000000000
I/DEBUG   ( 5454):  d26 3ff0000000000000  d27 0000000000000000
I/DEBUG   ( 5454):  d28 0000000000000000  d29 4010000000000000
I/DEBUG   ( 5454):  d30 0000000000000000  d31 0000000000000000
I/DEBUG   ( 5454):  scr 80000013
I/DEBUG   ( 5454):
I/DEBUG   ( 5454):          #00  pc 00042078  /system/lib/libdvm.so
I/DEBUG   ( 5454):          #01  pc 0003360c  /system/lib/libdvm.so
I/DEBUG   ( 5454):          #02  pc 00033736  /system/lib/libdvm.so
I/DEBUG   ( 5454):          #03  pc 00035070  /system/lib/libdvm.so
I/DEBUG   ( 5454):          #04  pc 0019a61a  /system/lib/
libwebcore.so
I/DEBUG   ( 5454):          #05  pc 00197070  /system/lib/
libwebcore.so
I/DEBUG   ( 5454):
I/DEBUG   ( 5454): code around pc:
I/DEBUG   ( 5454): 80242058 20061861 f7d418a2 2000eb8e ece6f7d4
I/DEBUG   ( 5454): 80242068 58234808 b1036bdb f8df4798 2026c01c
I/DEBUG   ( 5454): 80242078 0000f88c ed4cf7d4 0005f3a0 fffe3014
I/DEBUG   ( 5454): 80242088 fffe6288 0000039c deadd00d f8dfb40e
I/DEBUG   ( 5454): 80242098 b503c02c bf00490a 188ba200 f853aa03
I/DEBUG   ( 5454):
I/DEBUG   ( 5454): code around lr:
I/DEBUG   ( 5454): afd15650 b5f74b0d 490da200 2600189b 585c4602
I/DEBUG   ( 5454): afd15660 686768a5 f9b5e008 b120000c 46289201
I/DEBUG   ( 5454): afd15670 9a014790 35544306 37fff117 6824d5f3
I/DEBUG   ( 5454): afd15680 d1ed2c00 bdfe4630 0002ccd0 000000d4
I/DEBUG   ( 5454): afd15690 b086b570 f602fb01 9004460c a804a901
I/DEBUG   ( 5454):
I/DEBUG   ( 5454): stack:
I/DEBUG   ( 5454):     458f4a28  00000015
I/DEBUG   ( 5454):     458f4a2c  afd14659  /system/lib/libc.so
I/DEBUG   ( 5454):     458f4a30  afd425a0  /system/lib/libc.so
I/DEBUG   ( 5454):     458f4a34  afd4254c  /system/lib/libc.so
I/DEBUG   ( 5454):     458f4a38  00000000
I/DEBUG   ( 5454):     458f4a3c  afd15673  /system/lib/libc.so
I/DEBUG   ( 5454):     458f4a40  afd14629  /system/lib/libc.so
I/DEBUG   ( 5454):     458f4a44  afd14629  /system/lib/libc.so
I/DEBUG   ( 5454):     458f4a48  afd14680  /system/lib/libc.so
I/DEBUG   ( 5454):     458f4a4c  802a13f4  /system/lib/libdvm.so
I/DEBUG   ( 5454):     458f4a50  802a13f4  /system/lib/libdvm.so
I/DEBUG   ( 5454):     458f4a54  00000000
I/DEBUG   ( 5454):     458f4a58  00000000
I/DEBUG   ( 5454):     458f4a5c  afd1468d  /system/lib/libc.so
I/DEBUG   ( 5454):     458f4a60  df002777
I/DEBUG   ( 5454):     458f4a64  e3a070ad
I/DEBUG   ( 5454): #00 458f4a68  00000001
I/DEBUG   ( 5454):     458f4a6c  80233611  /system/lib/libdvm.so
I/DEBUG   ( 5454): #01 458f4a70  00000001
I/DEBUG   ( 5454):     458f4a74  8023373b  /system/lib/libdvm.so
D/dalvikvm( 5499): GC_EXTERNAL_ALLOC freed 2174 objects / 307128 bytes
in 40ms
I/DEBUG   ( 5454): de{*filter*}d committing suicide to free the zombie!
I/DEBUG   ( 5534): de{*filter*}d: Sep 14 2010 15:15:18
D/dalvikvm( 1016): GC_EXPLICIT freed 116 objects / 6056 bytes in 34ms
D/Zygote  (  819): Process 5499 terminated by signal (11) I/
ActivityManager(  899): Process com.android.browser (pid 5499) has
died.
I/WindowManager(  899): WIN DEATH: Window{441b10f8 com.android.browser/
com.android.browser.BrowserActivity paused=false} I/UsageStats(  899):
Unexpected resume of com.android.launcher while already resumed in
com.android.browser W/InputManagerService(  899): Got RemoteException
sending setActive(false) notification to pid 5499 uid 10016

-- 
unsubscribe: android-porting+unsubscr...@googlegroups.com
website:  http://www.***.com/ 

2. Music Application crashes on Beagleboard-Xm-A2

Hi,

I have been trying out Android Port for Beagleboard- XM-(A2) board
(from rowboat - http://code.google.com/p/rowboat/).
I see Music Application is crashing on start up. But sound is enabled,
Videos are played properly with sound.

Contacts,Camera and Phone applications are also behaving like this.

Please help me in understanding what the problem is:

Logcat Details:
---------------------

#
logcat
--------- beginning of /dev/log/
main
W/KeyCharacterMap( 1257): No keyboard for id
65536
W/KeyCharacterMap( 1257): Using default keymap: /system/usr/keychars/
qwerty.kcm.
bin
--------- beginning of /dev/log/
system
W/InputManagerService(  863): Starting input on non-focused client
com.android.i
nternal.view.iinputmethodclient$stub$pr...@441aad08 (uid=10009
pid=1257)
I/ActivityManager(  863): Starting activity: Intent
{ act=android.intent.action.
MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000
cmp=com.android.music
/.MusicBrowserActivity }
I/ActivityManager(  863): Starting activity: Intent
{ act=android.intent.action.
PICK dat= typ=vnd.android.cursor.dir/artistalbum flg=0x4000000
cmp=com.android.m
usic/.ArtistAlbumBrowserActivity (has
extras) }
W/ResourceType( 1200): Failure getting entry for 0x7f030008 (t=2 e=8)
in package
 0:
0xffffffb5
D/AndroidRuntime( 1200): Shutting down
VM
W/dalvikvm( 1200): threadid=1: thread exiting with uncaught exception
(group=0x4
001d7c8)
E/AndroidRuntime( 1200): FATAL EXCEPTION:
main
E/AndroidRuntime( 1200): java.lang.RuntimeException: Unable to start
activity Co
mponentInfo{com.android.music/
com.android.music.ArtistAlbumBrowserActivity}: and
roid.content.res.Resources$NotFoundException: Resource ID
#0x7f030008
E/AndroidRuntime( 1200):        at
android.app.ActivityThread.performLaunchActiv
ity(ActivityThread.java:
2663)
E/AndroidRuntime( 1200):        at
android.app.ActivityThread.handleLaunchActivi
ty(ActivityThread.java:
2679)
E/AndroidRuntime( 1200):        at android.app.ActivityThread.access
$2300(Activi
tyThread.java:
125)
E/AndroidRuntime( 1200):        at android.app.ActivityThread
$H.handleMessage(Ac
tivityThread.java:
2033)
E/AndroidRuntime( 1200):        at
android.os.Handler.dispatchMessage(Handler.ja
va:
99)
E/AndroidRuntime( 1200):        at android.os.Looper.loop(Looper.java:
123)
E/AndroidRuntime( 1200):        at
android.app.ActivityThread.main(ActivityThrea
d.java:
4627)
E/AndroidRuntime( 1200):        at
java.lang.reflect.Method.invokeNative(Native
Method)
E/AndroidRuntime( 1200):        at
java.lang.reflect.Method.invoke(Method.java:5
21)
E/AndroidRuntime( 1200):        at com.android.internal.os.ZygoteInit
$MethodAndA
rgsCaller.run(ZygoteInit.java:
868)
E/AndroidRuntime( 1200):        at
com.android.internal.os.ZygoteInit.main(Zygot
eInit.java:
626)
E/AndroidRuntime( 1200):        at
dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime( 1200): Caused by: android.content.res.Resources
$NotFoundExcept
ion: Resource ID
#0x7f030008
E/AndroidRuntime( 1200):        at
android.content.res.Resources.getValue(Resour
ces.java:
892)
E/AndroidRuntime( 1200):        at
android.content.res.Resources.loadXmlResource
Parser(Resources.java:
1869)
E/AndroidRuntime( 1200):        at
android.content.res.Resources.getLayout(Resou
rces.java:
731)
E/AndroidRuntime( 1200):        at
android.view.LayoutInflater.inflate(LayoutInf
later.java:
318)
E/AndroidRuntime( 1200):        at
android.view.LayoutInflater.inflate(LayoutInf
later.java:
276)
E/AndroidRuntime( 1200):        at
com.android.internal.policy.impl.PhoneWindow.
setContentView(PhoneWindow.java:
198)
E/AndroidRuntime( 1200):        at
android.app.Activity.setContentView(Activity.
java:
1647)
E/AndroidRuntime( 1200):        at
com.android.music.ArtistAlbumBrowserActivity.
onCreate(ArtistAlbumBrowserActivity.java:
105)
E/AndroidRuntime( 1200):        at
android.app.Instrumentation.callActivityOnCre
ate(Instrumentation.java:
1047)
E/AndroidRuntime( 1200):        at
android.app.ActivityThread.performLaunchActiv
ity(ActivityThread.java:
2627)
E/AndroidRuntime( 1200):        ... 11
more
W/ActivityManager(  863):   Force finishing activity
com.android.music/.ArtistAl
bumBrowserActivity
W/ActivityManager(  863): Activity pause timeout for
HistoryRecord{4415d568 com.
android.music/.ArtistAlbumBrowserActivity}
I/Process ( 1200): Sending signal. PID: 1200 SIG:
9
I/ActivityManager(  863): Process com.android.music (pid 1200) has
died.
W/ActivityManager(  863): Service crashed 2 times, stopping:
ServiceRecord{44209
5e8
com.android.music/.MediaPlaybackService}
W/InputManagerService(  863): Window already focused, ignoring focus
gain of: co
m.android.internal.view.IInputMethodClient$Stub
$pr...@441866d0



-- 
unsubscribe: android-porting+unsubscr...@googlegroups.com
website: 

3. Idea

4. How to creating Excel like sheet in Android with ListView / Tablelayout

5. How to Create ListView within ListView

6. An external library needs org.apache.commons.httpclient instead of org.apache.commons.http.client

7. XML encryption