package com.vansuita.materialabout.util;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.provider.ContactsContract;
import android.view.View;
import com.vansuita.materialabout.R;
/**
* Created by jrvansuita on 10/02/17.
*/
public final class IntentUtil {
private Context context;
public IntentUtil(Context context) {
this.context = context;
}
public Uri uri(int res, String user) {
return Uri.parse(context.getString(res, user));
}
public Uri uri(String url) {
return Uri.parse(url);
}
public Intent intent(Uri uri) {
return new Intent(Intent.ACTION_VIEW, uri);
}
public Intent intent(int res, String user) {
return intent(uri(res, user));
}
public Intent intent(String url) {
return intent(uri(url));
}
public View.OnClickListener clickUri(Uri uri) {
return clickIntent(intent(uri));
}
public View.OnClickListener clickIntent(final Intent intent) {
return new View.OnClickListener() {
@Override
public void onClick(View view) {
open(intent);
}
};
}
public void open(Intent intent) {
try {
context.startActivity(intent);
} catch (Throwable e) {
e.printStackTrace();
}
}
public void open(Uri uri) {
open(intent(uri));
}
private void tryPackage(int res) throws PackageManager.NameNotFoundException {
context.getPackageManager().getPackageInfo(context.getString(res), 0);
}
public Intent openFacebook(String user) {
try {
tryPackage(R.string.id_facebook_app);
return intent(R.string.uri_facebook_app, user);
} catch (Exception e) {
return intent(R.string.url_facebook_website, user);
}
}
public Intent openInstagram(String user) {
try {
tryPackage(R.string.id_instagram_app);
return intent(R.string.uri_instagram_app, user);
} catch (Exception e) {
return intent(R.string.url_instagram_website, user);
}
}
public Intent openTwitter(String user) {
try {
tryPackage(R.string.id_twitter_app);
return intent(R.string.uri_twitter_app, user);
} catch (Exception e) {
return intent(R.string.url_twitter_website, user);
}
}
public Intent openGooglePlus(String user) {
try {
tryPackage(R.string.id_google_plus_app);
return intent(R.string.uri_google_plus_app, user);
} catch (Exception e) {
return intent(R.string.url_google_plus_website, user);
}
}
public Intent openGooglePlayDev(String user) {
try {
return intent(R.string.url_google_play_store_developer_page, user);
} catch (Exception e) {
return intent(R.string.url_google_play_store_developer_page, user);
}
}
public Intent openYoutubeChannel(String user) {
try {
return intent(R.string.url_youtube_website, user);
} catch (Exception e) {
return intent(R.string.url_youtube_website, user);
}
}
public Intent openLinkedIn(String user) {
try {
tryPackage(R.string.id_linkedin_app);
return intent(R.string.uri_linkedin_app, user);
} catch (Exception e) {
return intent(R.string.url_linkedin_website, user);
}
}
public Intent openSkype(String phone) {
try {
tryPackage(R.string.id_skype_app);
return intent(R.string.uri_skype_app, phone);
} catch (Exception e) {
return intent(R.string.uri_skype_app, phone);
}
}
public Intent openAddContact(String name, String phone) {
Intent intent = new Intent(Intent.ACTION_INSERT);
intent.setType(ContactsContract.Contacts.CONTENT_TYPE);
intent.putExtra(ContactsContract.Intents.Insert.NAME, name);
intent.putExtra(ContactsContract.Intents.Insert.PHONE, phone);
return intent;
}
public Intent sendEmail(String email, String subject, String message) {
Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.setData(Uri.parse("mailto:")); // only email apps should handle this
intent.putExtra(Intent.EXTRA_EMAIL, new String[]{email});
intent.putExtra(Intent.EXTRA_SUBJECT, subject);
intent.putExtra(Intent.EXTRA_TEXT, message);
return intent;
}
public Intent openPlayStoreAppPage(String app) {
return intent(R.string.uri_play_store_app, app);
}
public Intent openPlayStoreAppsList(String app) {
return intent(R.string.uri_play_store_apps_list, app);
}
public Intent shareThisApp(String subject, String message) {
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_SUBJECT, subject);
intent.putExtra(Intent.EXTRA_TEXT, message);
return intent;
}
}