Skip to content
This repository was archived by the owner on Dec 2, 2019. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 0 additions & 19 deletions LinkPreview.iml

This file was deleted.

63 changes: 56 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ to your ProGuard rules file.
## Usage
#### Instantiating
```java
import com.leocardz.link.preview.library.TextCrawler;
import com.leocardz.linkpreview.sample.library.TextCrawler;
// ...
// Create an instance of the TextCrawler to parse your url into a preview.
TextCrawler textCrawler = new TextCrawler();
Expand All @@ -71,17 +71,66 @@ LinkPreviewCallback linkPreviewCallback = new LinkPreviewCallback() {

#### Generate Preview
```java
textCrawler.makePreview( linkPreviewCallback, url);
// using AsyncTask

textCrawler.makePreview(linkPreviewCallback, url);
```
```java
// using RxJava2
// no need to implement LinkPreviewCallback

textCrawler.makePreview(editText.getText().toString())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<SourceContent>() {
@Override
public void onSubscribe(Disposable d) {
linkPreviewDisposable = d;
linkPreviewCallback.onPre();
}

@Override
public void onNext(SourceContent sourceContent) {
try {
linkPreviewCallback.onPos(sourceContent, !sourceContent.isSuccess());
} catch (Exception e) {
onError(e);
}
}

@Override
public void onError(Throwable e) {
Toast.makeText(context, e.getMessage(), Toast.LENGTH_SHORT).show();
}

@Override
public void onComplete() {
}
});
}
```

#### Cancel unfinished tasks when views are destroied.
If you are using Android Link Preview inside of an Activity, it is important to cancel unfinished Preview activites at the end of the Activity's lifecycle.

```java
@Override
protected void onDestroy() {
super.onDestroy();
textCrawler.cancel();
}
// using AsyncTask

@Override
protected void onDestroy() {
super.onDestroy();
textCrawler.cancel();
}
```

```java
// using RxJava2

@Override
protected void onStop() {
if (!linkPreviewDisposable.isDisposed()) linkPreviewDisposable.dispose();
super.onStop();
}
```

Apps using Android Link Preview
Expand Down
14 changes: 9 additions & 5 deletions app/build.gradle
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
apply plugin: 'com.android.application'

android {
compileSdkVersion 23
compileSdkVersion 29

dexOptions {
jumboMode = true
}

defaultConfig {
applicationId "com.leocardz.link.preview"
minSdkVersion 11
targetSdkVersion 23
minSdkVersion 14
targetSdkVersion 29
versionCode 1
versionName "1.1"
}
Expand All @@ -23,8 +23,12 @@ android {
}

dependencies {
implementation project(":library")
implementation 'com.android.support:appcompat-v7:23.1.1'
implementation project(':linkpreview')
implementation 'androidx.appcompat:appcompat:1.1.0'

implementation 'com.koushikdutta.urlimageviewhelper:urlimageviewhelper:1.0.4'
implementation 'org.jsoup:jsoup:1.11.3'

implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
implementation 'io.reactivex.rxjava2:rxjava:2.2.12'
}
4 changes: 2 additions & 2 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.leocardz.link.preview"
package="com.leocardz.linkpreview.sample"
android:installLocation="preferExternal">

<uses-permission android:name="android.permission.INTERNET" />
Expand All @@ -12,7 +12,7 @@
android:screenOrientation="portrait"
android:theme="@style/App.Theme">
<activity
android:name=".Main"
android:name="com.leocardz.linkpreview.sample.Main"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@style/App.Theme">
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
package com.leocardz.link.preview;
package com.leocardz.linkpreview.sample;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
Expand All @@ -22,19 +21,25 @@
import android.widget.LinearLayout.LayoutParams;
import android.widget.TextView;
import android.widget.TextView.OnEditorActionListener;
import android.widget.Toast;

import com.koushikdutta.urlimageviewhelper.UrlImageViewCallback;
import com.koushikdutta.urlimageviewhelper.UrlImageViewHelper;
import com.leocardz.link.preview.library.LinkPreviewCallback;
import com.leocardz.link.preview.library.SourceContent;
import com.leocardz.link.preview.library.TextCrawler;
import com.leocardz.linkpreview.sample.library.LinkPreviewCallback;
import com.leocardz.linkpreview.sample.library.SourceContent;
import com.leocardz.linkpreview.sample.library.TextCrawler;

import java.util.List;
import java.util.Random;

import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;


@SuppressWarnings("unused")
public class Main extends ActionBarActivity {
public class Main extends Activity {

private EditText editText, editTextTitlePost, editTextDescriptionPost;
private Button submitButton, postButton, randomButton;
Expand All @@ -46,15 +51,16 @@ public class Main extends ActionBarActivity {

private TextView previewAreaTitle, postAreaTitle;

private String currentTitle, currentUrl, currentCannonicalUrl,
currentDescription;
private String currentTitle, currentUrl, currentCannonicalUrl, currentDescription;

private Bitmap[] currentImageSet;
private Bitmap currentImage;
private int currentItem = 0;
private int countBigImages = 0;
private boolean noThumb;

private Disposable linkPreviewDisposable;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Expand Down Expand Up @@ -137,7 +143,6 @@ public void onClick(View arg0) {
*/
private void initPostButton() {
postButton.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
postAreaTitle.setVisibility(View.VISIBLE);
Expand Down Expand Up @@ -174,8 +179,7 @@ public void onClick(View v) {
final TextView descriptionTextView = (TextView) content
.findViewById(R.id.description);

contentTextView.setText(TextCrawler.extendedTrim(editText
.getText().toString()));
contentTextView.setText(TextCrawler.Companion.extendedTrim(editText.getText().toString()));

if (currentImage != null && !noThumb) {
imageView.setImageBitmap(currentImage);
Expand All @@ -194,7 +198,7 @@ public void onClick(View v) {
descriptionTextView.setVisibility(View.GONE);

urlTextView.setText(currentCannonicalUrl);

final String currentUrlLocal = currentUrl;

mainView.setOnClickListener(new OnClickListener() {
Expand All @@ -219,24 +223,59 @@ public void onClick(View arg0) {
*/
public void initSubmitButton() {
submitButton.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View arg0) {
textCrawler.makePreview(new LinkPreviewCallback() {
@Override
public void onPre() {

}

@Override
public void onPos(SourceContent sourceContent, boolean isNull) {

}
}, "");
textCrawler.makePreview(editText.getText().toString())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<SourceContent>() {
@Override
public void onSubscribe(Disposable d) {
linkPreviewDisposable = d;
callback.onPre();
}

textCrawler
.makePreview(callback, editText.getText().toString());
// , TextCrawler.NONE);
@Override
public void onNext(SourceContent sourceContent) {
try {
callback.onPos(sourceContent, !sourceContent.isSuccess());
} catch (Exception e) {
onError(e);
}
}

@Override
public void onError(Throwable e) {
Toast.makeText(context, e.getMessage(), Toast.LENGTH_SHORT).show();
}

@Override
public void onComplete() {
}
});
}
});
}

/** Callback to update your view. Totally customizable. */
/** onPre() will be called before the crawling. onPos() after. */
/**
* Callback to update your view. Totally customizable.
* onPre() will be called before the crawling. onPos() after.
* You can customize this to update your view
*/
private LinkPreviewCallback callback = new LinkPreviewCallback() {
/**

/*
* This view is used to be updated or added in the layout after getting
* the result
*/
Expand Down Expand Up @@ -356,7 +395,7 @@ public void onClick(View arg0) {
titleTextView.setVisibility(View.GONE);

titleEditText.setText(TextCrawler
.extendedTrim(titleTextView.getText()
.Companion.extendedTrim(titleTextView.getText()
.toString()));
titleEditText.setVisibility(View.VISIBLE);
}
Expand All @@ -372,7 +411,7 @@ public boolean onEditorAction(TextView arg0,
titleEditText.setVisibility(View.GONE);

currentTitle = TextCrawler
.extendedTrim(titleEditText
.Companion.extendedTrim(titleEditText
.getText().toString());

titleTextView.setText(currentTitle);
Expand All @@ -391,7 +430,7 @@ public void onClick(View arg0) {
descriptionTextView.setVisibility(View.GONE);

descriptionEditText.setText(TextCrawler
.extendedTrim(descriptionTextView.getText()
.Companion.extendedTrim(descriptionTextView.getText()
.toString()));
descriptionEditText.setVisibility(View.VISIBLE);
}
Expand All @@ -408,7 +447,7 @@ public boolean onEditorAction(TextView arg0,
.setVisibility(View.GONE);

currentDescription = TextCrawler
.extendedTrim(descriptionEditText
.Companion.extendedTrim(descriptionEditText
.getText().toString());

descriptionTextView
Expand Down Expand Up @@ -512,7 +551,7 @@ public void onLoaded(ImageView imageView,
.setDescription(getString(R.string.enter_description));

titleTextView.setText(sourceContent.getTitle());
urlTextView.setText(sourceContent.getCannonicalUrl());
urlTextView.setText(sourceContent.getCanonicalUrl());
descriptionTextView.setText(sourceContent.getDescription());

postButton.setVisibility(View.VISIBLE);
Expand All @@ -521,7 +560,7 @@ public void onLoaded(ImageView imageView,
currentTitle = sourceContent.getTitle();
currentDescription = sourceContent.getDescription();
currentUrl = sourceContent.getUrl();
currentCannonicalUrl = sourceContent.getCannonicalUrl();
currentCannonicalUrl = sourceContent.getCanonicalUrl();
}
};

Expand Down Expand Up @@ -634,4 +673,10 @@ private void releasePreviewArea() {
previewAreaTitle.setVisibility(View.GONE);
dropPreview.removeAllViews();
}

@Override
protected void onStop() {
if (!linkPreviewDisposable.isDisposed()) linkPreviewDisposable.dispose();
super.onStop();
}
}
Loading