2017-03-27 13 views
2

ブラウザの履歴からURLを抽出しようとしています。私はコードの下にあり、それを実装しようとしました。しかし問題は、BookmarkColumnsBOOKMARKS_URInoiconにエラーを与えることです。ブラウザの履歴からURLを抽出すると、「BookmarkColumns」というシンボルを解決できません。

APIレベル16,23,25でこれを試しました。しかし、エラーdosent解決します。それは、常に

"シンボル 'BookmarkColumns' を解決できません" と言う

import android.content.ContentResolver; 
import android.database.Cursor; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.os.Bundle; 
import android.provider.Browser; 
import android.support.v7.app.AppCompatActivity; 
import android.widget.ListView; 
import android.widget.Toast; 

import java.util.ArrayList; 


public class MainActivity extends AppCompatActivity { 

    private ArrayList<String> titles; 
    private ArrayList<String> urls; 
    private ArrayList<Bitmap> bitmaps; 
    private ContentResolver cr; 

    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     createLists(); 
    } 

    protected void onResume() { 
     super.onResume(); 
     getBH(); 
     showHistoryBookmarks(); 

    } 

    public void createLists() { 
     titles = new ArrayList<String>(); 
     urls = new ArrayList<String>(); 
     bitmaps = new ArrayList<Bitmap>(); 

    } 

    public void getBH() { 
     Bitmap icon; 
     cr = getContentResolver(); 
     String order = Browser.BookmarkColumns.DATE + " DESC"; 
     String[] projection = {Browser.BookmarkColumns.TITLE, Browser.BookmarkColumns.URL, Browser.BookmarkColumns.FAVICON}; 
     //String selection=projection[0]+"=?"; 
     //String args[]={"Google"}; 
     Cursor rows = cr.query(Browser.BOOKMARKS_URI, projection, null, null, order); 
     if (rows.getCount() > 0) { 
      while (rows.moveToNext()) { 
       //read title 
       String title = rows.getString(rows.getColumnIndex(projection[0])); 
       //read url 
       String url = rows.getString(rows.getColumnIndex(projection[1])); 
       //read icon 
       byte[] bicon = rows.getBlob(rows.getColumnIndex(projection[2])); 
       if (bicon != null) { 
        //convert blob image data to Bitmap 
        icon = BitmapFactory.decodeByteArray(bicon, 0, bicon.length); 

       } else { 
        //default icon for history and bookmarks that do not icons 
        icon = BitmapFactory.decodeResource(getResources(), R.drawable.noicon); 
       } 
       //add to lists 
       addToList(title, url, icon); 
      } 
      //close the cursor 
      rows.close(); 
     } 


    } 


    public void addToList(String title, String url, Bitmap bitmap) { 

     titles.add(title); 
     urls.add(url); 
     bitmaps.add(bitmap); 

    } 


    public void showHistoryBookmarks() { 
     ListView l = (ListView) findViewById(R.id.hb_list); 
     if (l != null) { 
      if (titles.size() > 0) { 
       ListAdapterModel aa = new ListAdapterModel(this, R.layout.listlayout, R.id.hbtitle, titles, urls, bitmaps); 
       l.setAdapter(aa); 
      } else { 
       Toast.makeText(this, "This is no bookmark or history.", Toast.LENGTH_SHORT).show(); 
      } 
     } 

    } 
} 
+1

これらのAPIは、Android 7.0 SDK、IIRCで削除されました。彼らは最初は特に良いアイデアではなかった。 – CommonsWare

+2

ありがとうございます。彼らがそれらのAPIを削除する場合、私は思った同様のAPIを追加する必要があります。 @CommonsWareのAPIはありませんか? 。お邪魔してすみません。私はとても強調しています。 –

+2

「もし彼らがこれらのAPIを削除すれば、私が思うようなAPIを追加しなくてはなりません。選択した場合、各ブラウザアプリは独自のAPIを持つことができます。 – CommonsWare

答えて

2

はこれらchrome history APIを試してみてください...私はこの問題を解決するのに役立ちます。文書を読み、試してみてください。私はそれを試していない。しかし、思考は不完全です。

関連する問題