Fix contact loop on HTC and photo crash on 1.5

This commit is contained in:
Guillaume Beraudo 2011-11-16 15:04:10 +01:00
parent dd4b10f12d
commit fa68b1911c
4 changed files with 21 additions and 19 deletions

View file

@ -86,12 +86,12 @@
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />
</intent-filter> </intent-filter>
</activity> </activity>
<activity android:name="ContactPickerActivityNew"> <activity android:name="ContactPickerActivityNew" android:launchMode="singleTop">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />
</intent-filter> </intent-filter>
</activity> </activity>
<activity android:name="ContactPickerActivityOld"> <activity android:name="ContactPickerActivityOld" android:launchMode="singleTop">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />
</intent-filter> </intent-filter>

View file

@ -21,8 +21,6 @@ package org.linphone;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import org.linphone.mediastream.Version;
import android.app.Activity; import android.app.Activity;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.content.DialogInterface; import android.content.DialogInterface;
@ -77,6 +75,8 @@ public abstract class AbstractContactPickerActivity extends Activity implements
setContentView(R.layout.contact_picker); setContentView(R.layout.contact_picker);
createCustomPicker(); createCustomPicker();
} }
onNewIntent(getIntent());
} }
@ -135,6 +135,7 @@ public abstract class AbstractContactPickerActivity extends Activity implements
builder.setTitle(String.format(getString(R.string.title_numbers_dialog),contactName)); builder.setTitle(String.format(getString(R.string.title_numbers_dialog),contactName));
builder.setAdapter(pAdapter, new DialogInterface.OnClickListener() { builder.setAdapter(pAdapter, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
returnSelectedValues(pAdapter.getItem(which), contactName.toString(),getPhotoUri(id)); returnSelectedValues(pAdapter.getItem(which), contactName.toString(),getPhotoUri(id));
} }
}); });
@ -144,8 +145,7 @@ public abstract class AbstractContactPickerActivity extends Activity implements
dialog.dismiss(); dialog.dismiss();
} }
}); });
AlertDialog dialog = builder.create(); builder.create().show();
dialog.show();
} }
} }

View file

@ -28,6 +28,7 @@ import android.content.ContentUris;
import android.content.Intent; import android.content.Intent;
import android.database.Cursor; import android.database.Cursor;
import android.net.Uri; import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract; import android.provider.ContactsContract;
import android.provider.ContactsContract.Contacts; import android.provider.ContactsContract.Contacts;
import android.text.TextUtils; import android.text.TextUtils;
@ -131,15 +132,17 @@ public class ContactPickerActivityNew extends AbstractContactPickerActivity {
return list; return list;
} }
@Override
protected void onResume() {
super.onResume();
@Override
protected void onNewIntent(Intent intent) {
// Launch the native contact picker here in spite of onResume
// in order to avoid a loop that sometime occurs on HTC phones.
if (useNativePicker) { if (useNativePicker) {
Uri uri = ContactsContract.Contacts.CONTENT_URI; Uri uri = ContactsContract.Contacts.CONTENT_URI;
//ContactsContract.CommonDataKinds.Phone.CONTENT_URI //ContactsContract.CommonDataKinds.Phone.CONTENT_URI
startActivityForResult(new Intent(Intent.ACTION_PICK, uri), 0); startActivityForResult(new Intent(Intent.ACTION_PICK, uri), 0);
} }
super.onNewIntent(intent);
} }
protected void onActivityResult(int reqCode, int resultCode, Intent intent) { protected void onActivityResult(int reqCode, int resultCode, Intent intent) {

View file

@ -32,22 +32,21 @@ public class ContactPickerActivityOld extends Activity {
static final int PICK_CONTACT_REQUEST = 0; static final int PICK_CONTACT_REQUEST = 0;
static final int PICK_PHONE_NUMBER_REQUEST = 1; static final int PICK_PHONE_NUMBER_REQUEST = 1;
@Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
onNewIntent(getIntent());
} }
@Override @Override
protected void onResume() { protected void onNewIntent(Intent intent) {
super.onResume(); // Launch the native contact picker here in spite of onResume
startActivityForResult(new Intent(Intent.ACTION_PICK, Contacts.Phones.CONTENT_URI) // in order to avoid a loop that sometime occurs on HTC phones.
, Uri uri = Contacts.Phones.CONTENT_URI;
PICK_CONTACT_REQUEST); startActivityForResult(new Intent(Intent.ACTION_PICK,uri), PICK_CONTACT_REQUEST);
super.onNewIntent(intent);
} }
protected void onActivityResult(int requestCode, int resultCode, protected void onActivityResult(int requestCode, int resultCode,
Intent data) { Intent data) {
if (requestCode == PICK_CONTACT_REQUEST) { if (requestCode == PICK_CONTACT_REQUEST) {
@ -66,7 +65,7 @@ public class ContactPickerActivityOld extends Activity {
long id = lCur.getLong(lCur.getColumnIndex(People._ID)); long id = lCur.getLong(lCur.getColumnIndex(People._ID));
Uri personUri = ContentUris.withAppendedId(People.CONTENT_URI, id); Uri personUri = ContentUris.withAppendedId(People.CONTENT_URI, id);
Uri pictureUri = Uri.withAppendedPath(personUri, Contacts.Photos.CONTENT_DIRECTORY); Uri pictureUri = Uri.withAppendedPath(personUri, Contacts.Photos.CONTENT_DIRECTORY);
if (!ContactHelper.testPhotoUri(getContentResolver(), pictureUri, Contacts.Photos.CONTENT_DIRECTORY)) { if (!ContactHelper.testPhotoUri(getContentResolver(), pictureUri, android.provider.Contacts.Photos.DATA)) {
pictureUri = null; pictureUri = null;
} }
// FIXME surprisingly all this picture stuff doesn't seem to work // FIXME surprisingly all this picture stuff doesn't seem to work