<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>shortfuse.org</title>
	<atom:link href="http://shortfuse.org/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://shortfuse.org</link>
	<description>Official Home of SuperOneClick!</description>
	<lastBuildDate>Wed, 22 May 2013 15:51:20 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Navigation Drawer: What would you like to see it include?</title>
		<link>http://shortfuse.org/?p=402&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=navigation-drawer-what-would-you-like-to-see-it-include</link>
		<comments>http://shortfuse.org/?p=402#comments</comments>
		<pubDate>Wed, 22 May 2013 15:51:20 +0000</pubDate>
		<dc:creator>ShortFuse</dc:creator>
				<category><![CDATA[Fusion]]></category>

		<guid isPermaLink="false">http://shortfuse.org/?p=402</guid>
		<description><![CDATA[Google has made their [slide out drawer available to the public](http://developer.android.com/design/patterns/navigation-drawer.html). I&#8217;m wondering what you would like to see in this menu. Since I&#8217;m working on Google Hangouts incorporation I&#8217;m thinking of a drop down list of services to pick status/availability/sign-in/sign-out. Also, I think some quick options should be available like Auto-Open QuickReply. From here [...]]]></description>
				<content:encoded><![CDATA[<p>Google has made their [slide out drawer available to the public](http://developer.android.com/design/patterns/navigation-drawer.html). I&#8217;m wondering what you would like to see in this menu. </p>
<p>Since I&#8217;m working on Google Hangouts incorporation I&#8217;m thinking of a drop down list of services to pick status/availability/sign-in/sign-out.</p>
<p>Also, I think some quick options should be available like Auto-Open QuickReply. </p>
<p>From here you would be able to see and create scheduled messages.</p>
<p>Let me know what else you would like to see.</p>
]]></content:encoded>
			<wfw:commentRss>http://shortfuse.org/?feed=rss2&#038;p=402</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ViewTitleIndicator playing nice with Themes</title>
		<link>http://shortfuse.org/?p=399&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=viewtitleindicator-playing-nice-with-themes</link>
		<comments>http://shortfuse.org/?p=399#comments</comments>
		<pubDate>Mon, 15 Apr 2013 20:33:33 +0000</pubDate>
		<dc:creator>ShortFuse</dc:creator>
				<category><![CDATA[Fusion]]></category>

		<guid isPermaLink="false">http://shortfuse.org/?p=399</guid>
		<description><![CDATA[Build 70 incorporates ViewTitleIndicator by default now. The problem with the title indicators is that they don&#8217;t natively play nice with themes. Here&#8217;s how I fixed it: TypedValue tvBarTabStyle = new TypedValue(); int actionBarStyleResId; int backgroundResId; int actionBarTabTextStyleResId; int actionBarTabStyleResId; if (VERSION.SDK_INT &#62;= 14) {   backgroundResId = V14.getBackgroundStackedResId();   actionBarStyleResId = V11.getActionBarStyleResId();   actionBarTabTextStyleResId [...]]]></description>
				<content:encoded><![CDATA[<p>Build 70 incorporates ViewTitleIndicator by default now. The problem with the title indicators is that they don&#8217;t natively play nice with themes. Here&#8217;s how I fixed it:<br />
<code><br />
TypedValue tvBarTabStyle = new TypedValue();<br />
int actionBarStyleResId;<br />
int backgroundResId;<br />
int actionBarTabTextStyleResId;<br />
int actionBarTabStyleResId;</p>
<p>if (VERSION.SDK_INT &gt;= 14) {<br />
  backgroundResId = V14.getBackgroundStackedResId();<br />
  actionBarStyleResId = V11.getActionBarStyleResId();<br />
  actionBarTabTextStyleResId = V11<br />
      .getActionBarTabTextStyleResId();<br />
  actionBarTabStyleResId = V11.getActionBarTabStyleResId();<br />
} else if (VERSION.SDK_INT &gt;= 11) {<br />
  actionBarStyleResId = V11.getActionBarStyleResId();<br />
  backgroundResId = android.R.attr.background;<br />
  actionBarTabTextStyleResId = V11<br />
      .getActionBarTabTextStyleResId();<br />
  actionBarTabStyleResId = V11.getActionBarTabStyleResId();<br />
} else {<br />
  backgroundResId = com.actionbarsherlock.R.attr.backgroundStacked;<br />
  actionBarStyleResId = com.actionbarsherlock.R.attr.actionBarStyle;<br />
  actionBarTabTextStyleResId = com.actionbarsherlock.R.attr.actionBarTabTextStyle;<br />
  actionBarTabStyleResId = com.actionbarsherlock.R.attr.actionBarTabStyle;<br />
}</p>
<p>getTheme().resolveAttribute(actionBarStyleResId, tvBarTabStyle,<br />
    true);<br />
TypedArray taBackground = this.obtainStyledAttributes(<br />
    tvBarTabStyle.resourceId, new int[] { backgroundResId });<br />
mIndicator.setBackgroundResource(taBackground.getResourceId(0, 0));<br />
taBackground.recycle();</p>
<p>TypedValue tvBarTabTextStyle = new TypedValue();<br />
getTheme().resolveAttribute(actionBarTabTextStyleResId,<br />
    tvBarTabTextStyle, true);</p>
<p>TypedArray taTitleTextColor = this.obtainStyledAttributes(<br />
    tvBarTabTextStyle.resourceId,<br />
    new int[] { android.R.attr.textColor });<br />
mIndicator.setSelectedColor(taTitleTextColor.getColor(0, 0));<br />
mIndicator.setTextColor(taTitleTextColor.getColor(0, 0));<br />
taTitleTextColor.recycle();</p>
<p>TypedValue tvBarTabBarStyle = new TypedValue();<br />
getTheme().resolveAttribute(actionBarTabStyleResId,<br />
    tvBarTabBarStyle, true);<br />
TypedArray taIndicator = this.obtainStyledAttributes(<br />
    tvBarTabBarStyle.resourceId,<br />
    new int[] { android.R.attr.background });<br />
TypedValue tvDivider = new TypedValue();<br />
taIndicator.getValue(0, tvDivider);<br />
int color = -1;<br />
StateListDrawable sldIndicator = (StateListDrawable) getResources()<br />
    .getDrawable(tvDivider.resourceId);<br />
sldIndicator.setState(new int[] { android.R.attr.state_selected });<br />
Drawable drawable = sldIndicator.getCurrent();<br />
Bitmap bmp = Bitmap.createBitmap(drawable.getIntrinsicWidth(),<br />
    drawable.getIntrinsicHeight(), Config.ARGB_8888);<br />
Canvas canvas = new Canvas(bmp);<br />
drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());<br />
drawable.draw(canvas);<br />
int height = bmp.getHeight();<br />
int width = bmp.getWidth();<br />
color = bmp.getPixel(width / 2, height / 2);<br />
mIndicator.setFooterColor(color);<br />
taIndicator.recycle();<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://shortfuse.org/?feed=rss2&#038;p=399</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Dynamic Dates with Java</title>
		<link>http://shortfuse.org/?p=387&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=dynamic-dates-with-java</link>
		<comments>http://shortfuse.org/?p=387#comments</comments>
		<pubDate>Sun, 17 Mar 2013 07:19:52 +0000</pubDate>
		<dc:creator>ShortFuse</dc:creator>
				<category><![CDATA[Fusion]]></category>

		<guid isPermaLink="false">http://shortfuse.org/?p=387</guid>
		<description><![CDATA[I made a new change for build 48 of Fusion to show the date portion based on time. The difficulty is making it all work with all the different time zones and locales. 24 hours isn&#8217;t always a day because of daylight savings time. So I have to use Calendar. Here&#8217;s the static code: public [...]]]></description>
				<content:encoded><![CDATA[<p>I made a new change for build 48 of Fusion to show the date portion based on time. The difficulty is making it all work with all the different time zones and locales. 24 hours isn&#8217;t always a day because of daylight savings time. So I have to use Calendar. Here&#8217;s the static code:</p>
<pre><code>public static String stripFieldFromPattern(SimpleDateFormat sdf, Date d,
        DateFormat.Field field) {
    StringBuilder b = new StringBuilder();
    boolean isLastCharValid = true;
    boolean isNextCharValid = false;
    AttributedCharacterIterator i = sdf.formatToCharacterIterator(d);
    for (char c = i.first(); c != AttributedCharacterIterator.DONE; c = i
            .next()) {

        Map&lt;Attribute, Object&gt; attributes = i.getAttributes();

        if (attributes.containsKey(field)) {
            isLastCharValid = false;
            continue;
        }

        char nextChar = i.next();
        isNextCharValid = (nextChar != AttributedCharacterIterator.DONE &amp;&amp; i
                .getAttribute(field) == null);
        i.previous();

        if (!attributes.isEmpty() || c == ' ') {
            b.append(c);
        } else {
            if (isLastCharValid &amp;&amp; isNextCharValid)
                b.append(c);
        }
        isLastCharValid = true;
    }
    return b.toString();
}
</code></pre>
<p>This will strip any field from a date pattern. I&#8217;d strip the Year field if an event occurred in the last year. Here&#8217;s the implementation as written in Fusion:</p>
<pre><code>Calendar eventDateTime = Calendar.getInstance();
Calendar yesterday = Calendar.getInstance();
Calendar lastYear = Calendar.getInstance();

eventDateTime.setTimeInMillis(msgItem.getCompletionDateTime());
yesterday.add(Calendar.DATE, -1);
lastYear.add(Calendar.YEAR, -1);

String timeString;
String providerName;
if (eventDateTime.after(yesterday)) {
    timeString = DateFormat.getTimeInstance(DateFormat.SHORT,
            Locale.getDefault()).format(eventDateTime.getTime());
    providerName = IMProvider.IMServiceNames[msgItem
            .getIMProviderType().ordinal()];
} else if (eventDateTime.after(lastYear)) {
    SimpleDateFormat sdfOriginal = (SimpleDateFormat) SimpleDateFormat
            .getDateTimeInstance(DateFormat.SHORT,
                    DateFormat.SHORT, Locale.getDefault());
    timeString = Utils.stripFieldFromPattern(sdfOriginal,
            eventDateTime.getTime(), DateFormat.Field.YEAR);
    providerName = IMProvider.IMServiceNames[msgItem
            .getIMProviderType().ordinal()];

} else {
    timeString = DateFormat.getDateTimeInstance(DateFormat.SHORT,
            DateFormat.SHORT, Locale.getDefault()).format(
            eventDateTime.getTime());
    providerName = IMProvider.IMServiceShortNames[msgItem
            .getIMProviderType().ordinal()];
}

String format = "%1$s";
if (!this.useColoredStatus &amp;&amp; !this.useIMServiceIcon
        &amp;&amp; !this.useIMServiceIndicator)
    format += " via %2$s";
subText = String.format(format, timeString, providerName);</code></pre>
<p>I just realized the providerName is repeated unnecessarily. Oops! Regardless, it has nothing to with the topic here.</p>
]]></content:encoded>
			<wfw:commentRss>http://shortfuse.org/?feed=rss2&#038;p=387</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Build 44! Google Voice should work for everyone now!</title>
		<link>http://shortfuse.org/?p=379&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=build-43-google-voice-should-work-for-everyone-now</link>
		<comments>http://shortfuse.org/?p=379#comments</comments>
		<pubDate>Fri, 15 Mar 2013 22:23:50 +0000</pubDate>
		<dc:creator>ShortFuse</dc:creator>
				<category><![CDATA[Fusion]]></category>

		<guid isPermaLink="false">http://shortfuse.org/?p=379</guid>
		<description><![CDATA[Download Link Reddit Link Almost bug-free. Almost!]]></description>
				<content:encoded><![CDATA[<p><a title="http://www.mediafire.com/?n1o4zdlpp4hq8x3" href="http://www.mediafire.com/?n1o4zdlpp4hq8x3">Download Link</a></p>
<p><a title="http://www.reddit.com/r/fusionIM/comments/1adkx5/build_43_fixed_notification_crashes_hopefully_for/" href="http://www.reddit.com/r/fusionIM/comments/1adkx5/build_43_fixed_notification_crashes_hopefully_for/">Reddit Link</a></p>
<p>Almost bug-free. Almost!</p>
]]></content:encoded>
			<wfw:commentRss>http://shortfuse.org/?feed=rss2&#038;p=379</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Build 41! The definitive version</title>
		<link>http://shortfuse.org/?p=373&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=build-39-the-definitive-version</link>
		<comments>http://shortfuse.org/?p=373#comments</comments>
		<pubDate>Fri, 15 Mar 2013 03:47:37 +0000</pubDate>
		<dc:creator>ShortFuse</dc:creator>
				<category><![CDATA[Fusion]]></category>

		<guid isPermaLink="false">http://shortfuse.org/?p=373</guid>
		<description><![CDATA[http://www.reddit.com/r/fusionIM/comments/1abx1b/build_39_race_conditions_notifications_ui/ Only MMS, Notifications and 160 character limit left now!]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.reddit.com/r/fusionIM/comments/1abx1b/build_39_race_conditions_notifications_ui/">http://www.reddit.com/r/fusionIM/comments/1abx1b/build_39_race_conditions_notifications_ui/</a><br />
Only MMS, Notifications and 160 character limit left now!</p>
]]></content:encoded>
			<wfw:commentRss>http://shortfuse.org/?feed=rss2&#038;p=373</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Build 36! SMS fully sync now! READ ME!</title>
		<link>http://shortfuse.org/?p=370&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=build-36-sms-fully-sync-now-read-me</link>
		<comments>http://shortfuse.org/?p=370#comments</comments>
		<pubDate>Thu, 14 Mar 2013 06:55:02 +0000</pubDate>
		<dc:creator>ShortFuse</dc:creator>
				<category><![CDATA[Fusion]]></category>

		<guid isPermaLink="false">http://shortfuse.org/?p=370</guid>
		<description><![CDATA[http://www.mediafire.com/?9fr9lc5po5blc6h[1] Okay, so now SMS messages sync. If you have a bunch of old messages you don&#8217;t care about. Uninstall Fusion and reinstall it. You shouldn&#8217;t have to worry about reinstalling the GV app. I&#8217;ll submit a warning next build if Fusion couldn&#8217;t get the necessary push permissions. So, of course if SMS is syncing [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.mediafire.com/?9fr9lc5po5blc6h">http://www.mediafire.com/?9fr9lc5po5blc6h</a>[1]</p>
<p>Okay, so now SMS messages sync. If you have a bunch of old messages you don&#8217;t care about. Uninstall Fusion and reinstall it. You shouldn&#8217;t have to worry about reinstalling the GV app. I&#8217;ll submit a warning next build if Fusion couldn&#8217;t get the necessary push permissions.</p>
<p>So, of course if SMS is syncing this is when we need to worry about duplicates. I do a synchronize lock for outgoing messages you probably won&#8217;t ever see duplicates there. Let me know if you ever do.</p>
<p>Incoming is a whole other issue. So, Fusion and your stock app will both receive the message and both will write to the android stock database. The &#8220;workaround&#8221; is make Fusion wait to see if <em>maybe</em> another app will input the same message into the stock database. This is kinda silly. There&#8217;s no clean way to do this automatically without making the app slower. That&#8217;s NOT an option for me.</p>
<p>So, you can disable Fusion from receiving incoming messages. The second your stock app writes the incoming message, Fusion will INSTANTLY resync the database and the message will popup. Of course, if you ever choose to disable/uninstall your default messenger, then turn that option back.</p>
<p>The option is enabled by default.</p>
<p>I made some crash fixes so it looks like we&#8217;re in business now. It&#8217;s just MMS and notifications from here on out. After that we&#8217;re at feature-complete and I can start reworking code around for better stability and speed (yeah, I said it).</p>
<p>I need somebody to make sure you don&#8217;t auto crash and then I&#8217;ll publish it on the Play Store.</p>
]]></content:encoded>
			<wfw:commentRss>http://shortfuse.org/?feed=rss2&#038;p=370</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Let&#8217;s Build Fusion&#8217;s New Icon!</title>
		<link>http://shortfuse.org/?p=366&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=lets-build-fusions-new-icon</link>
		<comments>http://shortfuse.org/?p=366#comments</comments>
		<pubDate>Wed, 13 Mar 2013 05:35:48 +0000</pubDate>
		<dc:creator>ShortFuse</dc:creator>
				<category><![CDATA[Fusion]]></category>

		<guid isPermaLink="false">http://shortfuse.org/?p=366</guid>
		<description><![CDATA[&#160; Reddit link below: http://www.reddit.com/r/Android/comments/1a7855/lets_build_fusions_new_icon_psd_files_included]]></description>
				<content:encoded><![CDATA[<p>&nbsp;</p>
<p>Reddit link below:</p>
<p>http://www.reddit.com/r/Android/comments/1a7855/lets_build_fusions_new_icon_psd_files_included</p>
]]></content:encoded>
			<wfw:commentRss>http://shortfuse.org/?feed=rss2&#038;p=366</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Google Voice can&#8217;t delete individual messages&#8230;</title>
		<link>http://shortfuse.org/?p=359&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=google-voice-cant-delete-individual-messages</link>
		<comments>http://shortfuse.org/?p=359#comments</comments>
		<pubDate>Tue, 12 Mar 2013 05:13:13 +0000</pubDate>
		<dc:creator>ShortFuse</dc:creator>
				<category><![CDATA[Fusion]]></category>

		<guid isPermaLink="false">http://shortfuse.org/?p=359</guid>
		<description><![CDATA[Seriously, this is crazy. Apparently Google only knows how to work with &#8220;conversations&#8221;. There is literally no way to delete an individual message. Now I&#8217;m not so sure how to implement this. There are two ways. Delete the entire conversation from Google Voice&#8217;s servers and keep every other message on your Fusion database. The problem [...]]]></description>
				<content:encoded><![CDATA[<p>Seriously, this is crazy. Apparently Google only knows how to work with &#8220;conversations&#8221;. There is literally no way to delete an individual message.</p>
<p>Now I&#8217;m not so sure how to implement this. There are two ways.</p>
<ol>
<li>Delete the entire conversation from Google Voice&#8217;s servers and keep every other message on your Fusion database. The problem is, if you lose your database (like uninstalling the app), the entire conversation is lost.</li>
<li>Leave the conversation on Google Voice&#8217;s servers, but flag the MessageID as deleted. This pretty much means that Fusion will ignore the message on every sync, but it&#8217;ll still be on Google&#8217;s server.</li>
</ol>
<p>Really dumb implementation.</p>
]]></content:encoded>
			<wfw:commentRss>http://shortfuse.org/?feed=rss2&#038;p=359</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Build 31! Feedback needed!</title>
		<link>http://shortfuse.org/?p=355&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=build-31-feedback-needed</link>
		<comments>http://shortfuse.org/?p=355#comments</comments>
		<pubDate>Mon, 11 Mar 2013 14:46:52 +0000</pubDate>
		<dc:creator>ShortFuse</dc:creator>
				<category><![CDATA[Fusion]]></category>

		<guid isPermaLink="false">http://shortfuse.org/?p=355</guid>
		<description><![CDATA[http://www.mediafire.com/?d5i7bwx347rckq5 I haven&#8217;t uploaded it to the Play Store. I need somebody to run it and let me know if it works (aka doesn&#8217;t crash on boot). I moved everything to E164 by using libphonenumber. It&#8217;s bloated and slow (200kb) but I&#8217;ll trim that down later. The database is upgraded on boot (which is why [...]]]></description>
				<content:encoded><![CDATA[<p>http://www.mediafire.com/?d5i7bwx347rckq5</p>
<p>I haven&#8217;t uploaded it to the Play Store. I need somebody to run it and let me know if it works (aka doesn&#8217;t crash on boot).</p>
<p>I moved everything to E164 by using libphonenumber. It&#8217;s bloated and slow (200kb) but I&#8217;ll trim that down later.</p>
<p>The database is upgraded on boot (which is why it needs testing).</p>
<p>The search function is working as expected now. Clicking the search button will list all your contacts immediately.</p>
<p>Loading the first instance of contacts takes a little bit more time, but remember that it&#8217;s all cached after the first run though.</p>
<p>Dark Action Bar is properly fixed, so no more odd coloring in Android 2.x</p>
]]></content:encoded>
			<wfw:commentRss>http://shortfuse.org/?feed=rss2&#038;p=355</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Permission Breakdown</title>
		<link>http://shortfuse.org/?p=352&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=permission-breakdown</link>
		<comments>http://shortfuse.org/?p=352#comments</comments>
		<pubDate>Mon, 11 Mar 2013 05:22:17 +0000</pubDate>
		<dc:creator>ShortFuse</dc:creator>
				<category><![CDATA[Fusion]]></category>

		<guid isPermaLink="false">http://shortfuse.org/?p=352</guid>
		<description><![CDATA[Permissions Breakdown: android.permission.ACCESS_NETWORK_STATE: Google Voice Connectivity android.permission.INTERNET: Google Voice Connectivity android.permission.GET_ACCOUNTS: Get Google Account Names android.permission.MANAGE_ACCOUNTS: Create Google Account Prompt android.permission.READ_CONTACTS: Build Contacts List android.permission.READ_PROFILE: Get your profile icon android.permission.RECEIVE_BOOT_COMPLETED: Start on Boot android.permission.RECEIVE_SMS: Receive Text Messages android.permission.SEND_SMS: Send Text Messages android.permission.USE_CREDENTIALS: Get Google Voice OAuth2 credentials (never your password) android.permission.VIBRATE: Vibrate on New Message [...]]]></description>
				<content:encoded><![CDATA[<p>Permissions Breakdown:<br />
android.permission.ACCESS_NETWORK_STATE: Google Voice Connectivity<br />
android.permission.INTERNET: Google Voice Connectivity<br />
android.permission.GET_ACCOUNTS: Get Google Account Names<br />
android.permission.MANAGE_ACCOUNTS: Create Google Account Prompt<br />
android.permission.READ_CONTACTS: Build Contacts List<br />
android.permission.READ_PROFILE: Get your profile icon<br />
android.permission.RECEIVE_BOOT_COMPLETED: Start on Boot<br />
android.permission.RECEIVE_SMS: Receive Text Messages<br />
android.permission.SEND_SMS: Send Text Messages<br />
android.permission.USE_CREDENTIALS: Get Google Voice OAuth2 credentials (never your password)<br />
android.permission.VIBRATE: Vibrate on New Message<br />
com.android.vending.BILLING: Future Donations<br />
com.google.android.apps.googlevoice.INBOX_NOTIFICATION.permission.C2D_MESSAGE: GV Push Notification<br />
com.google.android.apps.googlevoice.permission.RECEIVE_SMS: GV Push Workaround<br />
com.google.android.c2dm.permission.RECEIVE: Push Notifications<br />
com.google.android.providers.gsf.permission.READ_GSERVICES: Register GV Push Notifications</p>
]]></content:encoded>
			<wfw:commentRss>http://shortfuse.org/?feed=rss2&#038;p=352</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
