restles20

لطفا یکی کدهایی رو که قرار دادم برام توضیح بده

6 ارسال در این موضوع قرار دارد

سلام بر همگی

سورسی رو دانلود کردم که در ادامه براتون قرارش دادم اما بعضی از قسمت هاش رو نمیدونم چه کاری انجام میدن ممنونتون میشم برام توضیح بدین

با تشکر

سورس فایل activity اصلی :

[shcode=java]package com.test.openfilechooser;

import java.io.File;

import android.annotation.SuppressLint;

import android.app.Activity;

import android.app.ProgressDialog;

import android.content.Intent;

import android.net.Uri;

import android.os.Bundle;

import android.os.Environment;

import android.os.Parcelable;

import android.provider.MediaStore;

import android.webkit.ConsoleMessage;

import android.webkit.ValueCallback;

import android.webkit.WebChromeClient;

import android.webkit.WebView;

import android.webkit.WebViewClient;

import android.webkit.WebSettings.PluginState;

import android.widget.Toast;

public class MainActivity extends Activity {

    public Uri imageUri;

    private WebView webView;

    final Activity activity = this;

    

    private Uri mCapturedImageURI = null;

    private ValueCallback mUploadMessage;

    private static final int FILECHOOSER_RESULTCODE   = 2888;

   

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

       

        String webViewUrl = "http://www.androidexample.com/media/webview/details.html";

       

        webView = (WebView) findViewById(R.id.webView1);

       

        webView.getSettings().setJavaScriptEnabled(true);

        webView.getSettings().setLoadWithOverviewMode(true);

        webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);

        webView.setScrollbarFadingEnabled(false);

        webView.getSettings().setBuiltInZoomControls(true);

        webView.getSettings().setPluginState(PluginState.ON);

        webView.getSettings().setAllowFileAccess(true);

        webView.getSettings().setSupportZoom(true);

        

        webView.loadUrl(webViewUrl);

        

        startWebView();

    }

   

    private void startWebView() {

        webView.setWebViewClient(new WebViewClient() {     

            ProgressDialog progressDialog;

         

            public boolean shouldOverrideUrlLoading(WebView view, String url) {            

                if(url.contains("google")){

                    view.getContext().startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));

                    return true;

                } else {

                    view.loadUrl(url);

                    return true;

                }

            }

            

            public void onLoadResource (WebView view, String url) {

                if (progressDialog == null && url.contains("androidexample")) {

                    progressDialog = new ProgressDialog(MainActivity.this);

                    progressDialog.setMessage("Loading...");

                    progressDialog.show();

                }

            }

            

            public void onPageFinished(WebView view, String url) {

                try{

                    if (progressDialog.isShowing()) {

                        progressDialog.dismiss();

                        progressDialog = null;

                    }

                }catch(Exception exception){

                    exception.printStackTrace();

                }

            }

        });

         

        webView.setWebChromeClient(new WebChromeClient() {

            public void openFileChooser(ValueCallback uploadMsg, String acceptType){ 

                mUploadMessage = uploadMsg;

                

                try{   

                    File imageStorageDir = new File(Environment.getExternalStoragePublicDirectory(

                                                           Environment.DIRECTORY_PICTURES)

                                                           , "AndroidExampleFolder");

                                           

                    if (!imageStorageDir.exists()) {

                        imageStorageDir.mkdirs();

                    }

                    

                    File file = new File(imageStorageDir + File.separator + "IMG_"

                                                         + String.valueOf(System.currentTimeMillis())

                                                         + ".jpg");

                                    

                    mCapturedImageURI = Uri.fromFile(file);

                    

                    final Intent captureIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);

                                                  

                    captureIntent.putExtra(MediaStore.EXTRA_OUTPUT, mCapturedImageURI);

                   

                    Intent i = new Intent(Intent.ACTION_GET_CONTENT);

                    i.addCategory(Intent.CATEGORY_OPENABLE);

                    i.setType("image/*");

                    

                    Intent chooserIntent = Intent.createChooser(i, "Image Chooser");

                    

                    chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS

                                           , new Parcelable[] { captureIntent });

                    

                    startActivityForResult(chooserIntent, FILECHOOSER_RESULTCODE);

                 } catch(Exception e){

                     Toast.makeText(getBaseContext(), "Exception:" + e, Toast.LENGTH_LONG).show();

                 }

                

            }

            

            // openFileChooser for Android < 3.0

            public void openFileChooser(ValueCallback uploadMsg){

                openFileChooser(uploadMsg, "");

            }

            

            //openFileChooser for other Android versions

            public void openFileChooser(ValueCallback uploadMsg, String acceptType, String capture) {

                openFileChooser(uploadMsg, acceptType);

            }

           

            public boolean onConsoleMessage(ConsoleMessage cm) { 

                  

                onConsoleMessage(cm.message(), cm.lineNumber(), cm.sourceId());

                return true;

            }

            

            public void onConsoleMessage(String message, int lineNumber, String sourceID) {

                //Log.d("androidruntime", "Show console messages, Used for debugging: " + message);

                

            }

        });

         

    }

   

    protected void onActivityResult(int requestCode, int resultCode, Intent intent) {

        if (requestCode == FILECHOOSER_RESULTCODE) { 

            if (null == this.mUploadMessage) {

                return;

            }

       

            Uri result = null;

       

            try {

                if (resultCode != RESULT_OK) {

                    result = null;

                } else {

                    result = intent == null ? mCapturedImageURI : intent.getData();

                }

            }

            catch(Exception e) {

                Toast.makeText(getApplicationContext(), "activity :" + e, Toast.LENGTH_LONG).show();

            }

           

            mUploadMessage.onReceiveValue(result);

            mUploadMessage = null;

        }

    }

   

    public void onBackPressed() {

        if(webView.canGoBack()) {

            webView.goBack();

        } else {

            super.onBackPressed();

        }

    }

}[/shcode]

سوال 1 - در خط 55 متد setWebViewClient چه زمانی مورد استفاده قرار میگیره و کاربردش چیست ؟؟؟

سوال 2 - در خط 88 متد setWebChromeClient چه زمانی مورد استفاده قرار میگیره و کاربردش چیست ؟؟؟

سوال 3 - کاربرد کلاس Uri چیه و دستور خط 106 چی کار میکنه ؟؟؟

سوال 4 - در خط 110 کد MediaStore.EXTRA_OUTPUT چی کار میکنه ؟؟؟

سوال 5 - در خطوط 112 تا 114 و خط 118 چی کار می کنیم؟؟؟

ممنونتون میشم به این 5 تا سوالم جواب بدین

با تشکر

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

سلام بر همگی

سورسی رو دانلود کردم که در ادامه براتون قرارش دادم اما بعضی از قسمت هاش رو نمیدونم چه کاری انجام میدن ممنونتون میشم برام توضیح بدین

با تشکر

سورس فایل activity اصلی :

[shcode=java]package com.test.openfilechooser;

import java.io.File;

import android.annotation.SuppressLint;

import android.app.Activity;

import android.app.ProgressDialog;

import android.content.Intent;

import android.net.Uri;

import android.os.Bundle;

import android.os.Environment;

import android.os.Parcelable;

import android.provider.MediaStore;

import android.webkit.ConsoleMessage;

import android.webkit.ValueCallback;

import android.webkit.WebChromeClient;

import android.webkit.WebView;

import android.webkit.WebViewClient;

import android.webkit.WebSettings.PluginState;

import android.widget.Toast;

public class MainActivity extends Activity {

    public Uri imageUri;

    private WebView webView;

    final Activity activity = this;

    

    private Uri mCapturedImageURI = null;

    private ValueCallback mUploadMessage;

    private static final int FILECHOOSER_RESULTCODE   = 2888;

   

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

       

        String webViewUrl = "http://www.androidexample.com/media/webview/details.html";

       

        webView = (WebView) findViewById(R.id.webView1);

       

        webView.getSettings().setJavaScriptEnabled(true);

        webView.getSettings().setLoadWithOverviewMode(true);

        webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);

        webView.setScrollbarFadingEnabled(false);

        webView.getSettings().setBuiltInZoomControls(true);

        webView.getSettings().setPluginState(PluginState.ON);

        webView.getSettings().setAllowFileAccess(true);

        webView.getSettings().setSupportZoom(true);

        

        webView.loadUrl(webViewUrl);

        

        startWebView();

    }

   

    private void startWebView() {

        webView.setWebViewClient(new WebViewClient() {     

            ProgressDialog progressDialog;

         

            public boolean shouldOverrideUrlLoading(WebView view, String url) {            

                if(url.contains("google")){

                    view.getContext().startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));

                    return true;

                } else {

                    view.loadUrl(url);

                    return true;

                }

            }

            

            public void onLoadResource (WebView view, String url) {

                if (progressDialog == null && url.contains("androidexample")) {

                    progressDialog = new ProgressDialog(MainActivity.this);

                    progressDialog.setMessage("Loading...");

                    progressDialog.show();

                }

            }

            

            public void onPageFinished(WebView view, String url) {

                try{

                    if (progressDialog.isShowing()) {

                        progressDialog.dismiss();

                        progressDialog = null;

                    }

                }catch(Exception exception){

                    exception.printStackTrace();

                }

            }

        });

         

        webView.setWebChromeClient(new WebChromeClient() {

            public void openFileChooser(ValueCallback uploadMsg, String acceptType){ 

                mUploadMessage = uploadMsg;

                

                try{   

                    File imageStorageDir = new File(Environment.getExternalStoragePublicDirectory(

                                                           Environment.DIRECTORY_PICTURES)

                                                           , "AndroidExampleFolder");

                                           

                    if (!imageStorageDir.exists()) {

                        imageStorageDir.mkdirs();

                    }

                    

                    File file = new File(imageStorageDir + File.separator + "IMG_"

                                                         + String.valueOf(System.currentTimeMillis())

                                                         + ".jpg");

                                    

                    mCapturedImageURI = Uri.fromFile(file);

                    

                    final Intent captureIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);

                                                  

                    captureIntent.putExtra(MediaStore.EXTRA_OUTPUT, mCapturedImageURI);

                   

                    Intent i = new Intent(Intent.ACTION_GET_CONTENT);

                    i.addCategory(Intent.CATEGORY_OPENABLE);

                    i.setType("image/*");

                    

                    Intent chooserIntent = Intent.createChooser(i, "Image Chooser");

                    

                    chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS

                                           , new Parcelable[] { captureIntent });

                    

                    startActivityForResult(chooserIntent, FILECHOOSER_RESULTCODE);

                 } catch(Exception e){

                     Toast.makeText(getBaseContext(), "Exception:" + e, Toast.LENGTH_LONG).show();

                 }

                

            }

            

            // openFileChooser for Android < 3.0

            public void openFileChooser(ValueCallback uploadMsg){

                openFileChooser(uploadMsg, "");

            }

            

            //openFileChooser for other Android versions

            public void openFileChooser(ValueCallback uploadMsg, String acceptType, String capture) {

                openFileChooser(uploadMsg, acceptType);

            }

           

            public boolean onConsoleMessage(ConsoleMessage cm) { 

                  

                onConsoleMessage(cm.message(), cm.lineNumber(), cm.sourceId());

                return true;

            }

            

            public void onConsoleMessage(String message, int lineNumber, String sourceID) {

                //Log.d("androidruntime", "Show console messages, Used for debugging: " + message);

                

            }

        });

         

    }

   

    protected void onActivityResult(int requestCode, int resultCode, Intent intent) {

        if (requestCode == FILECHOOSER_RESULTCODE) { 

            if (null == this.mUploadMessage) {

                return;

            }

       

            Uri result = null;

       

            try {

                if (resultCode != RESULT_OK) {

                    result = null;

                } else {

                    result = intent == null ? mCapturedImageURI : intent.getData();

                }

            }

            catch(Exception e) {

                Toast.makeText(getApplicationContext(), "activity :" + e, Toast.LENGTH_LONG).show();

            }

           

            mUploadMessage.onReceiveValue(result);

            mUploadMessage = null;

        }

    }

   

    public void onBackPressed() {

        if(webView.canGoBack()) {

            webView.goBack();

        } else {

            super.onBackPressed();

        }

    }

}[/shcode]

سوال 1 - در خط 55 متد setWebViewClient چه زمانی مورد استفاده قرار میگیره و کاربردش چیست ؟؟؟

سوال 2 - در خط 88 متد setWebChromeClient چه زمانی مورد استفاده قرار میگیره و کاربردش چیست ؟؟؟

سوال 3 - کاربرد کلاس Uri چیه و دستور خط 106 چی کار میکنه ؟؟؟

سوال 4 - در خط 110 کد MediaStore.EXTRA_OUTPUT چی کار میکنه ؟؟؟

سوال 5 - در خطوط 112 تا 114 و خط 118 چی کار می کنیم؟؟؟

ممنونتون میشم به این 5 تا سوالم جواب بدین

با تشکر

سلام دوست عزیز ،

  1. اگر آدرس Url شامل "google" بود ، برنامه یک Implicit Intent اجرا میکند و توسط مرورگر گوشی نمایش داده میشود.کلا این متد زمانی کاربرد دارد که شما بخواهید از مرورگر خارجی استفاده کنید.
  2. مانند webViewClient است ولی از امکانات بیشتری میتونی استفاده کنی.http://stackoverflow.com/questions/2835556/whats-the-difference-between-setwebviewclient-vs-setwebchromeclient
  3. Uri کلا کارش اینه که بیاد یه سری رشتو بگیره و به یه آدرس یکتا تبدیلش کنه. خط 106 آدرس کامل فایل عکس رو داخل یک Uri میریزه.
  4. به شماره 3 مربوط میشه MediaStore.EXTRA_OUTPUT یک کلید است که محل خروجی یا ذخیره فایل رو میگیره.همون 106
  5. زمانی که چند activity با intent filtere یکسان داشته باشی با addCategory مشخص میکنی که کدومش اجرا شه،و setType هم اگر "*/image" باشه activity هایی که مربوط به image هستند رو نمایش میده.118 همون آدرسو که در قالب یک intent و از نوع parcelable[] است و object آن را به chooserIntent می دهد.Parcelable help

امیدوارم که مفید باشه و مشکلتون حل شه.

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

ممنونم دوست عزیز

یه سوال دیگه هم از داشتم ... ممنونت میشم این ها رو هم برام توضیح بدی

کدهای زیر برای اعمال یکسری تنظیمات بر رو Webview هستتش ... ممنونت میشم بهم توضیح بدی که این کده دقیقا چی رفتار بر روی Webview می زارن ؟؟؟

[shcode=java]webView.getSettings().setLoadWithOverviewMode(true);

webView.getSettings().setUseWideViewPort(true);

webView.setScrollbarFadingEnabled(false);

webView.getSettings().setBuiltInZoomControls(true);

webView.getSettings().setPluginState(PluginState.ON);

webView.getSettings().setAllowFileAccess(true);

webView.getSettings().setSupportZoom(true); [/shcode]

و سوال دوم هم اینکه کد زیر چی کار می کنه ؟؟؟

[shcode=java]mUploadMessage.onReceiveValue(result);[/shcode]

با تشکر

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

بزرای توضیح کدها بهتره از لینک زیر استفاده کنید

developer.android.com/reference/android/webkit/WebView.html

یا این

http://www.vogella.com/code/de.vogella.android.webview.javascript/src/de/vogella/android/webview/javascript/WebViewActivity.html

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

ممنون بابت قرار دادن لینک ها اما ممنونت میشم خودت بهم توضیح بدی 

فقط در این حد که کد های فوق کدوم قابلیت های Webview رو فعال میکنن ؟؟؟

مثلا می دونم که دستور webView.getSettings().setJavaScriptEnabled(true); قابلیت خوندن و بارگذاری فایل های جاوا اسکریپت رو برای webview فعال میکنه و دستور webView.getSettings().setBuiltInZoomControls(true); هم دکمه های zoom in و zoom out را فعال میکنه

ممنونت میشم اگه کد های قرار داده شده رو بصورت بالا برام توضیح بدی

با تشکر فراوان

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

از دوستان خواهش می کنم که پاسخ سوال من رو هم با توجه به نحوه ای که گفتم بدهند

با تشکر از همه سروران گرامی

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری