1
0

More than 1 year has passed since last update.

[Android] PicassoとGoogleAPIでfaviconを取得する

Last updated at Posted at 2021-05-16

はじめに

  • URLを取得したときにわかりやすくアイコンを取得したかった
  • WebViewを使って取得するのは難しかった。
  • かんたんに完結にfaviconを取得したかった。

というわけで、PicassoとGoogleAPIを組み合わせてfaviconを取得しよう!!

準備(Gradle モジュール)

Picassoを使用するために、Gradleに以下の文を加筆する。


dependencies {

    implementation 'com.squareup.picasso:picasso:2.71828'
}

準備(AndroidManifest)

インターネットに接続して、画像を取得するため、ユーザーパーミッションの以下の文も加筆しておく。


<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

URLからGoogleAPIを使用して、faviconを取得する。

正式名称がわからないため、GoogleAPIであっているかもわかりませんが、このURLを使用すれば、faviconを取得できるらしい。

https://www.google.com/s2/favicons?domain=youtube.com

https://www.google.com/s2/favicons?domain={ドメイン}
ドメインの部分を変えればそのサイトのfaviconがPNG形式で取得できる

Picassoを使って画像を取得する。

Picassoを使用して、画像を取得することができる。

//MainActivity.kt
//OnCreate内

val domein = youtube.com

Picasso.get()
            //画像が乗っているURL
            .load("https://www.google.com/s2/favicons?domain=$domein")
            .resize(300, 300) //表示サイズ指定
            .centerCrop() //resizeで指定した範囲になるよう中央から切り出し
            .into(findViewById<ImageView>(R.id.imageView)) //imageViewに流し込み


ソースコード

package それぞれ合わせてください。

import android.os.Bundle
import android.widget.ImageView
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import com.squareup.picasso.Picasso
import java.net.URI


class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        var text = "https://twitter.com/home"


        findViewById<TextView>(R.id.textView).text = text

//      ドメインの取得
        val domein = URI(text).rawAuthority


        findViewById<TextView>(R.id.textView2).text = domein


        Picasso.get()
            //画像が乗っているURL
            .load("https://www.google.com/s2/favicons?domain=$domein")
            .resize(300, 300) //表示サイズ指定
            .centerCrop() //resizeで指定した範囲になるよう中央から切り出し
            .into(findViewById<ImageView>(R.id.imageView)) //imageViewに流し込み


    }
}

まとめ

今回faviconのAndroidでの取得の仕方をまとめてみました。
利点としてはとても簡潔なプログラムで完成してよかったです。
難点としては取得した画像の画質が悪いことですかね。

参考文献

github

今回部分部分で紹介していましたのでしっかりとプロジェクトとして作られているものも作りました。
ぜひ使ってみてください。

変更履歴

2022/4/25更新

・「Picasa」になっている部分がありましたので「Picasso」に変更しました。
・ドメインの取得を、自作関数から、javaの「java.net.URI」に変更した。

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0