Skip to content

Commit 7bec5ef

Browse files
committed
Add 'Signal Call' option to contact card
Fixes signalapp#4392 Closes signalapp#4465 // FREEBIE
1 parent 5c59c3f commit 7bec5ef

7 files changed

Lines changed: 256 additions & 112 deletions

File tree

AndroidManifest.xml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -317,6 +317,19 @@
317317
</intent-filter>
318318
</activity>
319319

320+
<activity android:name="org.thoughtcrime.redphone.RedPhoneShare"
321+
android:theme="@style/NoAnimation.Theme.BlackScreen"
322+
android:launchMode="singleTask"
323+
android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize">
324+
325+
<intent-filter>
326+
<action android:name="android.intent.action.VIEW" />
327+
<category android:name="android.intent.category.DEFAULT" />
328+
<data android:mimeType="vnd.android.cursor.item/vnd.org.thoughtcrime.securesms.call" />
329+
</intent-filter>
330+
331+
</activity>
332+
320333
<activity android:name=".RecipientPreferenceActivity"
321334
android:theme="@style/TextSecure.LightNoActionBar"
322335
android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/>

res/values/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@
7070

7171
<!-- ContactsDatabase -->
7272
<string name="ContactsDatabase_message_s">Message %s</string>
73+
<string name="ContactsDatabase_signal_call_s">Signal Call %s</string>
7374

7475
<!-- ConversationItem -->
7576
<string name="ConversationItem_message_size_d_kb">Message size: %d KB</string>

res/xml/contactsformat.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,9 @@
66
android:summaryColumn="data2"
77
android:detailColumn="data3"
88
android:detailSocialSummary="true"/>
9+
<ContactsDataKind
10+
android:icon="@drawable/icon"
11+
android:mimeType="vnd.android.cursor.item/vnd.org.thoughtcrime.securesms.call"
12+
android:summaryColumn="data2"
13+
android:detailColumn="data3"/>
914
</ContactsSource>
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package org.thoughtcrime.redphone;
2+
3+
import android.app.Activity;
4+
import android.content.Intent;
5+
import android.database.Cursor;
6+
import android.os.Bundle;
7+
import android.provider.ContactsContract;
8+
import android.text.TextUtils;
9+
10+
public class RedPhoneShare extends Activity {
11+
12+
private static final String TAG = RedPhone.class.getSimpleName();
13+
14+
@Override
15+
public void onCreate(Bundle icicle) {
16+
super.onCreate(icicle);
17+
18+
if (getIntent().getData() != null && "content".equals(getIntent().getData().getScheme())) {
19+
Cursor cursor = null;
20+
21+
try {
22+
cursor = getContentResolver().query(getIntent().getData(), null, null, null, null);
23+
24+
if (cursor != null && cursor.moveToNext()) {
25+
String destination = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.RawContacts.Data.DATA1));
26+
27+
if (!TextUtils.isEmpty(destination)) {
28+
Intent serviceIntent = new Intent(this, RedPhoneService.class);
29+
serviceIntent.setAction(RedPhoneService.ACTION_OUTGOING_CALL);
30+
serviceIntent.putExtra(RedPhoneService.EXTRA_REMOTE_NUMBER, destination);
31+
startService(serviceIntent);
32+
33+
Intent activityIntent = new Intent(this, RedPhone.class);
34+
activityIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
35+
startActivity(activityIntent);
36+
}
37+
}
38+
} finally {
39+
if (cursor != null) cursor.close();
40+
}
41+
}
42+
43+
finish();
44+
}
45+
46+
}

src/org/thoughtcrime/securesms/contacts/ContactsCursorLoader.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,13 @@
2020
import android.database.Cursor;
2121
import android.database.MatrixCursor;
2222
import android.database.MergeCursor;
23+
import android.provider.ContactsContract;
2324
import android.support.annotation.NonNull;
2425
import android.support.v4.content.CursorLoader;
2526
import android.text.TextUtils;
2627
import android.util.Log;
2728

29+
import org.thoughtcrime.securesms.R;
2830
import org.thoughtcrime.securesms.database.DatabaseFactory;
2931
import org.thoughtcrime.securesms.recipients.RecipientFactory;
3032
import org.thoughtcrime.securesms.recipients.Recipients;
@@ -73,7 +75,18 @@ public Cursor loadInBackground() {
7375
}
7476

7577
if (!TextUtils.isEmpty(filter) && NumberUtil.isValidSmsOrEmail(filter)) {
76-
cursorList.add(contactsDatabase.getNewNumberCursor(filter));
78+
MatrixCursor newNumberCursor = new MatrixCursor(new String[] {ContactsDatabase.ID_COLUMN,
79+
ContactsDatabase.NAME_COLUMN,
80+
ContactsDatabase.NUMBER_COLUMN,
81+
ContactsDatabase.NUMBER_TYPE_COLUMN,
82+
ContactsDatabase.LABEL_COLUMN,
83+
ContactsDatabase.CONTACT_TYPE_COLUMN}, 1);
84+
85+
newNumberCursor.addRow(new Object[] {-1L, getContext().getString(R.string.contact_selection_list__unknown_contact),
86+
filter, ContactsContract.CommonDataKinds.Phone.TYPE_CUSTOM,
87+
"\u21e2", ContactsDatabase.NEW_TYPE});
88+
89+
cursorList.add(newNumberCursor);
7790
}
7891

7992
return new MergeCursor(cursorList.toArray(new Cursor[0]));

0 commit comments

Comments
 (0)