Android 从webview URL设置壁纸

Android 从webview URL设置壁纸,android,android-webview,Android,Android Webview,我正在尝试设置一个应用程序,以便在Webview中加载URL,然后让该应用程序能够将单击的任何图像设置为墙纸 到目前为止,我能够加载的网址和显示画廊 我几乎被困在如何设置可点击的图像是壁纸上 任何帮助都将不胜感激 我的代码: package com.dg.rWallpapers; import java.io.IOException; import java.net.URISyntaxException; import java.net.URL; import org.apache.

我正在尝试设置一个应用程序,以便在Webview中加载URL,然后让该应用程序能够将单击的任何图像设置为墙纸

到目前为止,我能够加载的网址和显示画廊

我几乎被困在如何设置可点击的图像是壁纸上

任何帮助都将不胜感激

我的代码:

    package com.dg.rWallpapers;

import java.io.IOException;
import java.net.URISyntaxException;
import java.net.URL;

import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.entity.BufferedHttpEntity;
import org.apache.http.impl.client.DefaultHttpClient;

import android.app.Activity;
import android.app.WallpaperManager;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.RelativeLayout;
import android.widget.Toast;

import com.google.ads.AdRequest;
import com.google.ads.AdSize;
import com.google.ads.AdView;

public class rWallpapersActivity extends Activity {
    WebView mWebView;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        mWebView = (WebView) findViewById(R.id.webview);
        mWebView.getSettings().setJavaScriptEnabled(true);
        /* mWebView.getSettings().setBuiltInZoomControls(true); */ //Removed I do not want zooming.
        mWebView.getSettings().setUseWideViewPort(true);
        mWebView.loadUrl("http://wall.dg.net?wallId=5");
        mWebView.setWebViewClient(new HelloWebViewClient(this));

        // Lookup R.layout.main
        RelativeLayout layout = (RelativeLayout)findViewById(R.id.ad);

        AdView adView = new AdView(this, AdSize.BANNER, "xxxx");

        // Add the adView to it
        layout.addView(adView);

        // Initiate a generic request to load it with an ad
        AdRequest request = new AdRequest();
        //request.setTesting(true);

        adView.loadAd(request);

    }


    public class HelloWebViewClient extends WebViewClient {

        private WallpaperManager mWallpaperManager;
        private Context mContext;

        public HelloWebViewClient(Context context) {
            mContext = context;
            mWallpaperManager = WallpaperManager.getInstance(context);
        }

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            if (url.endsWith(".png") || url.endsWith(".jpg")) {
                try {
                    Bitmap b = downloadImage(url);
                    mWallpaperManager.setBitmap(b);
                    Toast.makeText(mContext, "Done!!", Toast.LENGTH_SHORT).show();
                    return true;
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return false;
        }

        private Bitmap downloadImage(String fileUrl) throws IOException {
            try {
                HttpGet httpRequest = new HttpGet(new URL(fileUrl).toURI());
                HttpClient httpClient = new DefaultHttpClient();

                HttpResponse response = (HttpResponse) httpClient.execute(httpRequest);
                BufferedHttpEntity buffer = new BufferedHttpEntity(response.getEntity());
                return BitmapFactory.decodeStream(buffer.getContent());
            } catch (IllegalArgumentException e) {
                e.printStackTrace();
            } catch (URISyntaxException e) {
                e.printStackTrace();
            }
            return null;
        }
    }


    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
            mWebView.goBack();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }


}
您可以使用自定义并实现
shouldOverrideUrlLoading()
方法来处理在活动中单击图像的操作。在那里,您可以下载图像并将其设置为壁纸

下面是这样一个
WebViewClient
的示例:

public class MyWebViewClient extends WebViewClient {

    private WallpaperManager mWallpaperManager;
    private Context mContext;

    public MyWebViewClient(Context context) {
        mContext = context;
        mWallpaperManager = WallpaperManager.getInstance(context);
    }

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (url.endsWith(".png") || url.endsWith(".jpg") || url.endsWith(".jpeg")) {
            new AsyncTask<String, Void, Bitmap>() {

                @Override
                protected Bitmap doInBackground(String... params) {
                    try {
                        return downloadImage(params[0]);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }

                    return null;
                }

                @Override
                protected void onPostExecute(Bitmap result) {
                    if (result != null) {
                        try {
                            mWallpaperManager.setBitmap(result);
                            Toast.makeText(mContext, "Done!!", Toast.LENGTH_SHORT).show();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }

            }.execute(url);
            return true;
        }
        return false;
    }

    private Bitmap downloadImage(String fileUrl) throws IOException {
        try {
            HttpGet httpRequest = new HttpGet(new URL(fileUrl).toURI());
            HttpClient httpClient = new DefaultHttpClient();

            HttpResponse response = (HttpResponse) httpClient.execute(httpRequest);
            BufferedHttpEntity buffer = new BufferedHttpEntity(response.getEntity());
            return BitmapFactory.decodeStream(buffer.getContent());
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        } catch (URISyntaxException e) {
            e.printStackTrace();
        }
        return null;
    }
}
公共类MyWebViewClient扩展了WebViewClient{
私人墙纸经理;
私有上下文;
公共MyWebViewClient(上下文){
mContext=上下文;
mWallpaperManager=wallperManager.getInstance(上下文);
}
@凌驾
公共布尔值shouldOverrideUrlLoading(WebView视图,字符串url){
if(url.endsWith(“.png”)| url.endsWith(“.jpg”)| url.endsWith(“.jpeg”)){
新建异步任务(){
@凌驾
受保护位图doInBackground(字符串…参数){
试一试{
返回下载图像(参数[0]);
}捕获(IOE异常){
e、 printStackTrace();
}
返回null;
}
@凌驾
受保护的void onPostExecute(位图结果){
如果(结果!=null){
试一试{
mWallpaperManager.setBitmap(结果);
Toast.makeText(mContext,“Done!!”,Toast.LENGTH_SHORT.show();
}捕获(IOE异常){
e、 printStackTrace();
}
}
}
}.执行(url);
返回true;
}
返回false;
}
私有位图下载图像(字符串文件URL)引发IOException{
试一试{
HttpGet-httpRequest=newhttpget(newurl(fileUrl.toURI());
HttpClient HttpClient=新的DefaultHttpClient();
HttpResponse response=(HttpResponse)httpClient.execute(httpRequest);
BufferedHttpEntity buffer=新的BufferedHttpEntity(response.getEntity());
返回BitmapFactory.decodeStream(buffer.getContent());
}捕获(IllegalArgumentException e){
e、 printStackTrace();
}捕获(URISyntaxException e){
e、 printStackTrace();
}
返回null;
}
}
您可以在活动中通过
setWebClient(新的MyWebViewClient(this))
将WebViewClient添加到您的WebView中。

您可以使用自定义并实现
shouldOverrideUrlLoading()
方法来处理在活动中单击图像的操作。在那里,您可以下载图像并将其设置为壁纸

下面是这样一个
WebViewClient
的示例:

public class MyWebViewClient extends WebViewClient {

    private WallpaperManager mWallpaperManager;
    private Context mContext;

    public MyWebViewClient(Context context) {
        mContext = context;
        mWallpaperManager = WallpaperManager.getInstance(context);
    }

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (url.endsWith(".png") || url.endsWith(".jpg") || url.endsWith(".jpeg")) {
            new AsyncTask<String, Void, Bitmap>() {

                @Override
                protected Bitmap doInBackground(String... params) {
                    try {
                        return downloadImage(params[0]);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }

                    return null;
                }

                @Override
                protected void onPostExecute(Bitmap result) {
                    if (result != null) {
                        try {
                            mWallpaperManager.setBitmap(result);
                            Toast.makeText(mContext, "Done!!", Toast.LENGTH_SHORT).show();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }

            }.execute(url);
            return true;
        }
        return false;
    }

    private Bitmap downloadImage(String fileUrl) throws IOException {
        try {
            HttpGet httpRequest = new HttpGet(new URL(fileUrl).toURI());
            HttpClient httpClient = new DefaultHttpClient();

            HttpResponse response = (HttpResponse) httpClient.execute(httpRequest);
            BufferedHttpEntity buffer = new BufferedHttpEntity(response.getEntity());
            return BitmapFactory.decodeStream(buffer.getContent());
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        } catch (URISyntaxException e) {
            e.printStackTrace();
        }
        return null;
    }
}
公共类MyWebViewClient扩展了WebViewClient{
私人墙纸经理;
私有上下文;
公共MyWebViewClient(上下文){
mContext=上下文;
mWallpaperManager=wallperManager.getInstance(上下文);
}
@凌驾
公共布尔值shouldOverrideUrlLoading(WebView视图,字符串url){
if(url.endsWith(“.png”)| url.endsWith(“.jpg”)| url.endsWith(“.jpeg”)){
新建异步任务(){
@凌驾
受保护位图doInBackground(字符串…参数){
试一试{
返回下载图像(参数[0]);
}捕获(IOE异常){
e、 printStackTrace();
}
返回null;
}
@凌驾
受保护的void onPostExecute(位图结果){
如果(结果!=null){
试一试{
mWallpaperManager.setBitmap(结果);
Toast.makeText(mContext,“Done!!”,Toast.LENGTH_SHORT.show();
}捕获(IOE异常){
e、 printStackTrace();
}
}
}
}.执行(url);
返回true;
}
返回false;
}
私有位图下载图像(字符串文件URL)引发IOException{
试一试{
HttpGet-httpRequest=newhttpget(newurl(fileUrl.toURI());
HttpClient HttpClient=新的DefaultHttpClient();
HttpResponse response=(HttpResponse)httpClient.execute(httpRequest);
BufferedHttpEntity buffer=新的BufferedHttpEntity(response.getEntity());
返回BitmapFactory.decodeStream(buffer.getContent());
}捕获(IllegalArgumentException e){
e、 printStackTrace();
}捕获(URISyntaxException e){
e、 printStackTrace();
}
返回null;
}
}

您可以通过活动中的
setWebClient(新的MyWebViewClient(this))
将WebViewClient添加到您的WebView中。

您有示例或示例代码吗??我对安卓开发完全陌生。顺便说一句,我已经把它作为setWebClient()了,好的,我开始了:
public void onLoadResource(WebView视图,字符串url){if(url.contains(.png”)| | url.contains(.jpg”)| | | url.contains(.jpeg”){//想做什么就做什么}
我很少出错。我做了一切,甚至导入了所有需要的文件。SDK 3.2=13。我把错误贴在上面了。我们是否可以交换skype或gtalk。我真的需要帮助。我已经添加了我的整个java文件。你有一个示例或示例代码吗??我对安卓开发完全陌生。顺便说一句,我已经有了