티스토리 뷰
이번에는 앱 내에서 웹 화면을 보여주는 것과 주소를 받아 웹 사이트로 이동하는 것을 만들어보겠습니다
먼저 화면을 보여드리겠습니다
웹뷰가 크게 있고 하단에 주소를 적는 에딧텍스트와 버튼이 두개 있습니다
버튼 웹뷰 로드를 누르면 웹뷰에서 웹사이트를 접속하고
웹으로 연결을 누르면 타 인터넷 앱에서 웹사이트를 접속합니다
xml코드를 보여드리겠습니다
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<WebView
android:id="@+id/webView"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginBottom="100dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<EditText
android:id="@+id/editText"
android:layout_width="0dp"
android:layout_height="0dp"
android:gravity="center"
android:inputType="textUri"
android:text="https://o-s-z.tistory.com/"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/button"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/webView" />
<Button
android:id="@+id/button"
android:layout_width="100dp"
android:layout_height="50dp"
android:background="#ffffff"
android:onClick="bt1"
android:text="웹뷰 로드"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/webView" />
<Button
android:id="@+id/button2"
android:layout_width="100dp"
android:layout_height="50dp"
android:background="#ffffff"
android:onClick="bt2"
android:text="웹으로 연결"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
웹뷰와 에딧텍스트와 버튼 2개로 구성되어있습니다
에딧텍스트는 uri를 적기 적합하게 인풋타입을 textUri로 줬습니다
그리고 각 버튼은 누르면 함수 bt1과 bt2를 실행하도록 해놨습니다
java코드를 보여드리겠습니다
package com.ehsehsl.osz;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.EditText;
public class MainActivity extends AppCompatActivity {
EditText editText;
WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = findViewById(R.id.editText);
webView = findViewById(R.id.webView);
}
public void bt1(View view) {
webView.setWebViewClient(new WebViewClient()); // 이것 안 넣어주면 다른 앱으로 넘어갈 수 있음
webView.getSettings().setJavaScriptEnabled(true); // 자바스크립트 사용 가능하게
webView.loadUrl(editText.getText().toString()); // 적은 주소로 웹뷰 실행
}
public void bt2(View view) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(editText.getText().toString()));
startActivity(intent); // 뷰 열기
}
}
전에는 bt1안에 첫줄을 생략해도 웹뷰에서 잘 실행이 됐는데 타 인터넷 앱으로 넘어가길래 추가해줬습니다
두번째 줄은 넣어줘야 웹이 정상적으로 실행이 됩니다
세번째 줄로 로드합니다
bt2는 인텐트를 이용해 간단하게 인터넷 앱으로 실행하게 만듭니다
하지만 여기까지만 하면 bt1이 제대로 작동하지 않습니다
AndroidManifest.xml에 코드를 추가해야 합니다
위치는 안드로이드로 봤을때 app>manifests안에 있습니다
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ehsehsl.osz">
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:usesCleartextTraffic="true"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
여기서 인터넷을 사용하려면 추가해야하는 코드는
<uses-permission android:name="android.permission.INTERNET"/>
이것 입니다
그리고 https면 상관없지만 http를 사용하려면
android:usesCleartextTraffic="true"
이 코드도 추가하여야 합니다
'안드로이드 네이티브' 카테고리의 다른 글
안드로이드 앨범에서 사진 불러와 보여주고 내부저장소에 저장과 삭제하기 (0) | 2020.09.30 |
---|---|
안드로이드 스레드(Thread) 사용하기 (0) | 2020.09.29 |
안드로이드 UI 보이게 안 보이게 하는 방법 (visibility) (0) | 2020.09.13 |
안드로이드 클립보드에 저장하기 ClipboardManager (0) | 2020.09.09 |
안드로이드 간단하게 타이머 만들기 CountDownTimer (0) | 2020.09.09 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 자동답장
- 구구단어플
- 구구단앱
- 챗봇
- 카카오톡
- 노래
- 오토핫키
- loop
- MouseMove
- 로또
- 채팅
- Flutter
- 코틀린
- 카카오봇
- 안드로이드앱개발
- inputbox
- 안드로이드클라이언트
- 구구단공부
- 안드로이드
- 매크로
- sendinput
- 명언
- JS
- 자바스크립트
- 안드로이드네이티브
- 구구단
- 안드로이드스튜디오
- 앱개발
- 안드로이드앱
- 플러터
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함