Typical T-Mobile Service Interaction Needs Log Analysis

by Brian Milnes » Sun, 04 Jan 2009 07:44:27 GMT


Sponsored Links
 Folks,

 I have a new G1 and it's started rebooting and bombing out of Chrome.
In fact, I can't load slashdot without it rebooting. So I attempted to
jail break it so that I can read the android log, but the current
recipe no longer works.

 So I'm stuck calling T-Mobile who start with the "newbie" questions,
then on to a technical service rep. The service rep then wants me to
remove ALL applications from the phone and try again. A totally
unacceptable
service interaction. That tech can't read the log to see what
happened,
if I got to a store they can't read the log and I can't read the log.
T-Mobile
does not support the applications, don't know which may cause problems
and thus will always be very paranoid about them.

 This is going to waste a LOT of time, money and customer good will.

 A great solution to this is an over the air log collector and
analyzer that
points to problems. It will need to make the standard judgment of is
the problem Hardware, OS, Android or the applications.

 Is anything like this in the works?


--~--~---------~--~----~------------~-------~--~----~



Other Threads

1. ListView Dyamically selected layout based on Item type in row.

Could some explain in detail how it is possible to have a ListView
where each item in the list is rendered by its type and has different
layout.


So to clarify if i have ten rows they will all have the same layout if
they are each the same type of record like non-fiction book.

If have of the books in the list are audio books I will have an audio
type layout just for displaying that type of book.  How to dynamically
assign row layout to item in a row based on its type, type field or
some other criterial.

Thanks

-- 

2. Account name with spaces throws Exception on Android 2.2

Hello,

there seems to be some changes from Android 2.1 to Android 2.2 which
throws an Exception when contact account names have spaces.
I use the following code:

mEntityUri = ContactsContract.Groups.CONTENT_URI.buildUpon()
    .appendQueryParameter(ContactsContract.Groups.ACCOUNT_NAME,
mAccountName)
    .appendQueryParameter(ContactsContract.Groups.ACCOUNT_TYPE,
mAccountType)
    .appendQueryParameter(ContactsContract.CALLER_IS_SYNCADAPTER,
"true")
    .build();

and later (with the same values):

ContentProviderOperation.Builder builder =
ContentProviderOperation.newInsert(mEntityUri);
Log.v(TAG, "create accountgroup: "+mAccountType+", "+mAccountName);
builder.withValue(ContactsContract.Groups.ACCOUNT_TYPE, mAccountType);
builder.withValue(ContactsContract.Groups.ACCOUNT_NAME, mAccountName);
builder.withValue(ContactsContract.Groups.SYSTEM_ID, mAccountName);
builder.withValue(ContactsContract.Groups.TITLE, mAccountName);
builder.withValue(ContactsContract.Groups.GROUP_VISIBLE, 1);
mBatchOperation.add(builder.build());

mBatchOperation.execute(); // this is line 133 in GroupManager.java

On Android 2.1 this code works fine on Android 2.2 this works fine as
long as there are no spaces in mAccountName.
If there are spaces the following Exception is thrown:

java.lang.IllegalArgumentException: When both specified, ACCOUNT_NAME
and ACCOUNT_TYPE must match; URI:
content://com.android.contacts/groups?account_name=Home%20Address%20Book&account_type=org.dmfs.carddav.account&caller_is_syncadapter=true,
calling user: org.dmfs.carddav.sync, calling
package:org.dmfs.carddav.sync
at
android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:
144)
at
android.database.DatabaseUtils.readExceptionWithOperationApplicationExceptionFromParcel(DatabaseUtils.java:
137)
at
android.content.ContentProviderProxy.applyBatch(ContentProviderNative.java:
491)
at
android.content.ContentProviderClient.applyBatch(ContentProviderClient.java:
95)
at android.content.ContentResolver.applyBatch(ContentResolver.java:
622)
at org.dmfs.contacts.BatchOperations.execute(BatchOperations.java:54)
at org.dmfs.contacts.GroupManager.execute(GroupManager.java:133)
at
org.dmfs.carddav.syncadapter.SyncAdapter.onPerformSync(SyncAdapter.java:
124)
at android.content.AbstractThreadedSyncAdapter
$SyncThread.run(AbstractThreadedSyncAdapter.java:163)

BatchOperations is implemented following the example in
sampleSyncAdapter.

resolveAccount from ContactsProvider2.java uses a different check now,
maybe the "%20" is not properly replaced.

Is there a known work-around (aside from removing spaces in the
account
name)?

cheers

Marten

-- 

3. Sliding Drawer question

4. Does the Google app store allow apps that target just 1 device?

5. Distinguish between Power button and Screen timeout

6. debugging services, broadcast messages

7. How should I invoke InstalledAppDetails from a program?