How to get started in a new window using WebView?

I have a ViewPager with several fragments inside, and one of them contains a webview. Inside this WebView, I would like to open links to images (jpeg / png) in the designated activity that I use to display images:

MyFragment.java

    webView.setWebViewClient(new WebViewClient() {

        public void startImageView(String url) {
            Intent imageIntent = new Intent(getActivity(), ImageActivity.class);
            imageIntent.putExtra(ImageActivity.IMAGE_URL, Uri.parse(url));
            startActivity(imageIntent);
        }

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url){
            if (url.toLowerCase().endsWith(".png") || url.toLowerCase().endsWith(".jpg") || url.toLowerCase().endsWith(".jpeg")) {
                startImageView(url);
            } else {
                view.loadUrl(url);
            }
            return false;
       }

    });

ImageActivity.java

public class ImageActivity extends ActionBarActivity {
  @Override
  public void onCreate(Bundle savedInstanceState) {
    requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_image_full_size);
...
}

AndroidManifest.xml

...
        <activity
            android:name="com.example.main.ImageActivity"
            android:label="Picture"
            android:screenOrientation="portrait"
        >
        </activity>
...

webview, . , ( ). ( -, ), , . , ImageActivity WebView?

+4
1

, , Android. startActivity Activity . , , , , , .

if (url.toLowerCase().endsWith(".png") || url.toLowerCase().endsWith(".jpg") || url.toLowerCase().endsWith(".jpeg")) {
                startImageView(url);
            } else {
                view.loadUrl(url);
            }

if, , ELSE, WebView .

URL- - , if else.

? www.foo.com/bar/image.png?w=300h=300? endsWith . : url.toLowerCase().contains(".png")

.

String candidateUrl = url.toLowerCase();
if (candidateUrl.contains(".png") 
   || candidateUrl.contains(".jpg") 
   || candidateUrl.contains(".jpeg")) {
   Log.d("MyTag", "Start a new activity for: " + url);
   startImageView(url);
} else {
   Log.d("MyTag", "Load inside webview " + url);
   view.loadUrl(url);
}
0

Source: https://habr.com/ru/post/1585070/


All Articles