간단한 뉴스 앱 만들기 #5 - 인터넷 브라우저로 열기
이전에 NewsData 클래스에 url을 만들어두고, 또한 activity_main.xml LinearLayout에 id(LinearLayout_goChrome)를 미리 저장해 두었다.
일단 url을 설정을 해두고 layout을 통해 인터넷 브라우저를 열어보자.
url 설정
먼저 MainActivity에서 데이터를 받아오고 저장하는 단계를 보자.
StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
List<NewsData> newsList = new ArrayList<NewsData>();
JSONArray arrayArticles = new JSONObject(response).getJSONArray("items");
for (int i = 0; i < arrayArticles.length(); i++) {
JSONObject obj = arrayArticles.getJSONObject(i);
NewsData news = new NewsData();
news.setTitle(obj.getString("title"));
news.setUrlToImage(obj.getString("image"));
news.setContent(obj.getString("description"));
newsList.add(news);
}
...
} catch (JSONException e) {
...
}
}
}, ...);
여기서 url setter에 url을 저장하자.
StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
...
news.setTitle(obj.getString("title"));
news.setUrlToImage(obj.getString("image"));
news.setContent(obj.getString("description"));
news.setLink(obj.getString("link"));
newsList.add(news);
...
} catch (JSONException e) {
...
}
}
}, ...);
url을 설정해두었으니 NewsActivity에서 이미지 및 제목을 클릭 시 브라우저로 해당 글을 열어보자.
브라우저 열기
activity_main.xml파일에서 이미지와 제목을 묶은 LinearLayout의 이름을 NewsActivity.class에 저장한다.
그리고 url을 저장할 string 변수를 미리 선언해두자.
public LinearLayout LinearLayout_goChrome;
public String url = "www.google.com";
...
LinearLayout_goChrome = findViewById(R.id.LinearLayout_goChrome);
앞에서 데이터를 받아 왔을 시점에 url도 같이 저장해 준다.
Intent intent = getIntent();
NewsData getNews = (NewsData) intent.getExtras().get("getNews");
url = getNews.getLink();
TextView_Title.setText(getNews.getTitle());
TextView_Content.setText(getNews.getContent());
Uri uri = Uri.parse(getNews.getUrlToImage());
ImageView_Title.setImageURI(uri);
해당 Layout을 클릭 가능한 상태와 클릭 리스너를 만들어 준다.
LinearLayout_goChrome.setClickable(true);
LinearLayout_goChrome.setEnabled(true);
LinearLayout_goChrome.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
코드로 특정 사이트를 브라우저로 여는 방법은 Intent를 이용하는 것이다.
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com"));
startActivity(intent);
과 같이 선언해 두면, 기본 브라우저로 해당 url을 열어준다고 한다.
이를 click리스너에 저장해두면 될 것이다.
우리는 url이라는 변수에 가고싶은 링크를 저장했으므로 다음과 같이 정의한다.
LinearLayout_goChrome.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
}
});
여기까지 인터넷 브라우저로 우리가 원하는 링크를 띄우는데 성공했다.
그런데 기본 브라우저가 익스플로러가 아닌 크롬으로 하고 싶다면, 다음과 같은 코드를 추가한다.intent.setPackage("com.android.chrome");
-
NewsActivity.class 전체코드
package com.example.newstest; import ... public class NewsActivity extends AppCompatActivity { public TextView TextView_Title; public TextView TextView_Content; public SimpleDraweeView ImageView_Title; public LinearLayout LinearLayout_goChrome; public String url = "www.google.com"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //Fresco.initialize(this); TextView_Title = findViewById(R.id.TextView_Title); TextView_Content = findViewById(R.id.TextView_Content); ImageView_Title = findViewById(R.id.ImageView_Title); LinearLayout_goChrome = findViewById(R.id.LinearLayout_goChrome); LinearLayout_goChrome.setClickable(true); LinearLayout_goChrome.setEnabled(true);
Intent intent = getIntent();
NewsData getNews = (NewsData) intent.getExtras().get("getNews");
url = getNews.getLink();
TextView_Title.setText(getNews.getTitle());
TextView_Content.setText(getNews.getContent());
Uri uri = Uri.parse(getNews.getUrlToImage());
ImageView_Title.setImageURI(uri);
LinearLayout_goChrome.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
intent.setPackage("com.android.chrome");
startActivity(intent);
}
});
}
}
```
- 실행 화면
'Android > 간단한 뉴스 앱 만들기(기초)' 카테고리의 다른 글
간단한 뉴스 앱 만들기 #4 - 화면 전환 (0) | 2021.01.20 |
---|---|
간단한 뉴스 앱 만들기 #3 - newsapi로 데이터 받아오기 (0) | 2021.01.17 |
간단한 뉴스 앱 만들기 #2 - RecyclerView (0) | 2021.01.17 |
간단한 뉴스 앱 만들기 #1 - UI 생성 (0) | 2021.01.17 |
최근댓글