Skip to content

Commit 03c48e6

Browse files
committed
load url in WfcWebViewActivity
1 parent 184352f commit 03c48e6

File tree

5 files changed

+96
-6
lines changed

5 files changed

+96
-6
lines changed

chat/src/main/AndroidManifest.xml

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -189,14 +189,19 @@
189189
<activity android:name="cn.wildfire.chat.kit.channel.ChannelInfoActivity" />
190190
<activity
191191
android:name="cn.wildfire.chat.app.main.MainActivity"
192-
android:launchMode="singleTask"
193-
android:label="火信">
192+
android:label="火信"
193+
android:launchMode="singleTask">
194194
<intent-filter>
195195
<action android:name="${applicationId}.main" />
196196
<category android:name="android.intent.category.DEFAULT" />
197197
</intent-filter>
198198
</activity>
199-
<activity android:name="cn.wildfire.chat.kit.WfcWebViewActivity" />
199+
<activity android:name="cn.wildfire.chat.kit.WfcWebViewActivity">
200+
<intent-filter>
201+
<action android:name="${applicationId}.webview" />
202+
<category android:name="android.intent.category.DEFAULT" />
203+
</intent-filter>
204+
</activity>
200205
<activity android:name="cn.wildfire.chat.kit.search.SearchMessageActivity" />
201206
<activity android:name="cn.wildfire.chat.kit.channel.SearchChannelActivity" />
202207
<activity android:name="cn.wildfire.chat.kit.group.PickGroupMemberActivity" />
@@ -216,10 +221,10 @@
216221
<activity android:name="cn.wildfire.chat.kit.group.manage.AddGroupManagerActivity" />
217222
<activity android:name="cn.wildfire.chat.kit.group.manage.GroupMuteActivity" />
218223
<activity android:name="cn.wildfire.chat.kit.group.manage.GroupMemberPermissionActivity" />
219-
<activity android:name="cn.wildfire.chat.kit.group.GroupMemberListActivity"
224+
<activity
225+
android:name="cn.wildfire.chat.kit.group.GroupMemberListActivity"
220226
android:label="群成员列表"
221-
android:screenOrientation="portrait"
222-
/>
227+
android:screenOrientation="portrait" />
223228

224229
<provider
225230
android:name="androidx.core.content.FileProvider"

chat/src/main/java/cn/wildfire/chat/kit/WfcIntent.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,5 @@ public interface WfcIntent {
99
String ACTION_USER_INFO = BuildConfig.APPLICATION_ID + ".user.info";
1010
String ACTION_GROUP_INFO = BuildConfig.APPLICATION_ID + ".group.info";
1111
String ACTION_VOIP_SINGLE = BuildConfig.APPLICATION_ID + ".kit.voip.single";
12+
String ACTION_VIEW = BuildConfig.APPLICATION_ID + ".webview";
1213
}

chat/src/main/java/cn/wildfire/chat/kit/conversation/message/viewholder/TextMessageContentViewHolder.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,15 @@
1515

1616
import butterknife.Bind;
1717
import butterknife.OnClick;
18+
import cn.wildfire.chat.kit.WfcWebViewActivity;
1819
import cn.wildfire.chat.kit.annotation.EnableContextMenu;
1920
import cn.wildfire.chat.kit.annotation.MessageContentType;
2021
import cn.wildfire.chat.kit.annotation.MessageContextMenuItem;
2122
import cn.wildfire.chat.kit.annotation.ReceiveLayoutRes;
2223
import cn.wildfire.chat.kit.annotation.SendLayoutRes;
2324
import cn.wildfire.chat.kit.conversation.message.model.UiMessage;
25+
import cn.wildfire.chat.kit.widget.LinkClickListener;
26+
import cn.wildfire.chat.kit.widget.LinkTextViewMovementMethod;
2427
import cn.wildfirechat.chat.R;
2528
import cn.wildfirechat.message.TextMessageContent;
2629

@@ -39,6 +42,13 @@ public TextMessageContentViewHolder(FragmentActivity activity, RecyclerView.Adap
3942
@Override
4043
public void onBind(UiMessage message) {
4144
MoonUtils.identifyFaceExpression(context, contentTextView, ((TextMessageContent) message.message.content).getContent(), ImageSpan.ALIGN_BOTTOM);
45+
contentTextView.setMovementMethod(new LinkTextViewMovementMethod(new LinkClickListener() {
46+
@Override
47+
public boolean onLinkClick(String link) {
48+
WfcWebViewActivity.loadUrl(context, "", link);
49+
return true;
50+
}
51+
}));
4252
}
4353

4454
@OnClick(R.id.contentTextView)
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package cn.wildfire.chat.kit.widget;
2+
3+
public interface LinkClickListener {
4+
boolean onLinkClick(String link);
5+
}
6+
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
package cn.wildfire.chat.kit.widget;
2+
3+
import android.text.Layout;
4+
import android.text.Spannable;
5+
import android.text.method.LinkMovementMethod;
6+
import android.text.method.Touch;
7+
import android.text.style.ClickableSpan;
8+
import android.text.style.URLSpan;
9+
import android.view.MotionEvent;
10+
import android.view.ViewConfiguration;
11+
import android.widget.TextView;
12+
13+
public class LinkTextViewMovementMethod extends LinkMovementMethod {
14+
15+
private long mLastActionDownTime;
16+
private LinkClickListener mListener;
17+
18+
public LinkTextViewMovementMethod(LinkClickListener listener) {
19+
mListener = listener;
20+
}
21+
22+
@Override
23+
public boolean onTouchEvent(TextView widget, Spannable buffer, MotionEvent event) {
24+
int action = event.getAction();
25+
26+
if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_DOWN) {
27+
int x = (int) event.getX();
28+
int y = (int) event.getY();
29+
30+
x -= widget.getTotalPaddingLeft();
31+
y -= widget.getTotalPaddingTop();
32+
33+
x += widget.getScrollX();
34+
y += widget.getScrollY();
35+
36+
Layout layout = widget.getLayout();
37+
int line = layout.getLineForVertical(y);
38+
int off = layout.getOffsetForHorizontal(line, x);
39+
40+
ClickableSpan[] link = buffer.getSpans(off, off, ClickableSpan.class);
41+
42+
if (link.length != 0) {
43+
if (action == MotionEvent.ACTION_UP) {
44+
long actionUpTime = System.currentTimeMillis();
45+
if (actionUpTime - mLastActionDownTime > ViewConfiguration.getLongPressTimeout()) {
46+
return true;
47+
}
48+
String url = null;
49+
if (link[0] instanceof URLSpan)
50+
url = ((URLSpan) link[0]).getURL();
51+
if (mListener != null && mListener.onLinkClick(url))
52+
return true;
53+
else
54+
link[0].onClick(widget);
55+
} else if (action == MotionEvent.ACTION_DOWN) {
56+
mLastActionDownTime = System.currentTimeMillis();
57+
}
58+
return true;
59+
} else {
60+
Touch.onTouchEvent(widget, buffer, event);
61+
return false;
62+
}
63+
}
64+
return Touch.onTouchEvent(widget, buffer, event);
65+
}
66+
}
67+
68+

0 commit comments

Comments
 (0)