sharedPreferences=this.getSharedPreferences("SP",MODE_WORLD_READABLE);//取得该应用的名为”SP”的sharedPreferences的类对象。 intPeriod=sharedPreferences.getInt("PERIOD", 1); //获得该sharedpreferences对象中的名为PERIOD的Int类型内容。默认值为1 editor=sharedPreferences.edit(); //获得对该对象进行操作的editor对象。 editor.putInt("PERIOD",intPeriod ); editor.commit(); //使用editor对象对sharedpreferes进行写操作。
写文件。
FileOutputStream fos= this.openFileOutput("Preferences.txt", MODE_WORLD_READABLE+MODE_APPEND); //采用追加形式打开Preferences.txt的文件输出流。 fos.write(buff); //将buff数组中的数据写入文件 fos.flush(); //确认写入提交,这时写入的内容会正式从缓冲区被写入文件。
FileInputStream fis= openFileInput("Preferences.txt"); //打开文件输入流 fis.read(buffer); //从文件中读取数据到buffer数组中,读取的长度为buffer数组的length
new Timer().schedule(new TimerTask() { //创建一个schedule类,并使用schedule安排一个定时线程,也就是TimerTask类 @Override public void run() { CrawlerAsy c = new CrawlerAsy(); //创建爬虫线程对象 c.execute(""); //开始执行爬虫线程 Log.i("in crawler","crawler done"); } }, 0,period);
HttpClient hc = new DefaultHttpClient(); //HttpClient负责执行http请求 HttpGet request = new HttpGet(url); //HttpGet包含了请求内容 HttpResponse hr; //HttpReponse包含了请求结果 hr= hc.execute(request); InputStream is=hr.getEntity().getContent(); ByteArrayOutputStream b = new ByteArrayOutputStream(); byte [] htmlData = b.toByteArray(); //………………….这里省略了从inputStream读取数据到ByteArrayOutputStream的过程。 content=new String(htmlData,0,htmlData.length,"GBK"); //以GBK编码方式获得网页文本
str = "href=\"(.+?)\".+>(.*?)"+keyWord.get(i)+"(.*?)<"; //str为正则表达式字符串 Pattern pattern = Pattern.compile(str); //编译正则表达式 Matcher matcher = pattern.matcher(content); //获取正则表达式匹配对象,其中包含了需要匹配的内容 newInformation.urlString=matcher.group(1); //使用正则表达式进行匹配 newInformation.newsTitle=matcher.group(2) +keyWord.get(i)+matcher.group(3);
public class CrawlerAsy extends AsyncTask<String,Integer, String>{ //新建extends asynctask的类 @Override protected String doInBackground(String... params) { //重写doInBackground类方法 ArrayList<NewsInformation> news=new ArrayList<NewsInformation>(); news = theCrawler(); //开始文件操作,将爬取到的新闻放入文件中 if(news!=null){ writeFile(news); } return null; }
import android.app.Notification; import android.app.NotificationManager; NotificationManager nManager=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE); //创建通知栏管理类对象 int icon=R.drawable.my_launcher; CharSequence textSequence="虫虫又有新新闻了!"; long when = System.currentTimeMillis(); Notification notification= new Notification(icon,textSequence,when); //创建通知栏通知消息对象 PendingIntent pendingIntent= PendingIntent.getActivity(CrawlerThread.this, 0, new Intent(CrawlerThread.this,MainInterface.class), 0); //创建当点击通知时跳转intent notification.setLatestEventInfo(getApplicationContext(), "虫虫新闻", "虫虫又有新新闻了", pendingIntent); //设置点击事件 notification.flags=Notification.FLAG_AUTO_CANCEL; notification.defaults= Notification.DEFAULT_SOUND; nManager.notify(0,notification); //将通知放到通知栏第一个的位置
public class BootReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { Intent newIntent = new Intent(context,CrawlerThread.class); context.startService(newIntent); //开启服务 } }
<receiver android:name="com.tanglikang.crawlernews.BootReceiver"> <intent-filter > <action android:name="android.intent.action.BOOT_COMPLETED"/> //接受广播为系统开机启动完成后发出的广播。 <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </receiver>
String url = n.urlString; Uri uri=Uri.parse(url);//在uri对象中绑定网址信息 Intent i = new Intent(Intent.ACTION_VIEW,uri); startActivity(i); //开启外部浏览器activity