java - Android ImageView 链接到网站

标签 java android eclipse

我想要一张链接到网站的图像。我知道这是可能的,但我对 Java 的了解非常基础。应用程序的其余部分已经完成,我只需要这个来完成它。 我已经添加了权限。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
 >

<ImageView
    android:id="@+id/imageView1"
    android:layout_width="200dp"
    android:layout_height="200dp"
    android:layout_centerHorizontal="true"
    android:src="@drawable/uccw_skins_icon" />

<Button
    android:id="@+id/buttonRepairSkin"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@id/imageView1"
    android:layout_centerHorizontal="true"
    android:layout_gravity="center|center_vertical"
    android:layout_marginTop="8dp"
    android:gravity="center|center_horizontal"
    android:text="@string/install_skin" />

<ImageView
    android:id="@+id/imageView2"
    android:layout_width="200dp"
    android:layout_height="71dp"
    android:layout_alignLeft="@+id/imageView1"
    android:layout_below="@+id/ad"
    android:layout_marginTop="35dp"
    android:src="@drawable/reclamebanners" />

   //load code while onCreate calls
</RelativeLayout>

这是MainActivity.java:

package penhoat.design.gs5free;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.content.res.AssetManager;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Toast;

public class MainActivity extends Activity {

// change this to your apk skin name
private static final String UCCW_TEST_SKIN_APK = "gs5free.apk";



// Do not touch code that follows unless you know what you are doing
private Context context;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    context = this;
    setContentView(R.layout.main);
    findViewById(R.id.buttonRepairSkin).setOnClickListener(
            new OnClickListener() {

                @Override
                public void onClick(View v) {
                    showInstallableSkins();
                }

            });

}

private class RepairSkinAsyncTask extends AsyncTask<Void, Void, Void> {

    private ProgressDialog mDialog;

    @Override
    protected void onPreExecute() {
        mDialog = ProgressDialog.show(context, "", "Processing...", true);
    }

    @Override
    protected Void doInBackground(Void... nothing) {
        String SDCARD_MYAPK_APK = Environment.getExternalStorageDirectory()
                .getPath() + File.separator + "my_temporary_skin_apk.apk";
        deleteOldSkin(SDCARD_MYAPK_APK);
        saveSkinToSdCard(SDCARD_MYAPK_APK);
        startAppInstaller(SDCARD_MYAPK_APK);
        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
        mDialog.dismiss();
        finish();
    }
}

/**
 * 
 */
private void showInstallableSkins() {
    if (isSDcardAvailable()) {
        new RepairSkinAsyncTask().execute();
    } else {
        Toast.makeText(this, "SD card not available", Toast.LENGTH_LONG)
                .show();
    }

}

private void deleteOldSkin(String pathToSkin) {
    File file = new File(pathToSkin);
    if (file.exists()) {
        file.delete();
    }
}

/**
 * @param assetManager
 * @param in
 * @param out
 * @param pathToSkin
 */
private void saveSkinToSdCard(String pathToSkin) {
    AssetManager assetManager = getAssets();

    InputStream in = null;
    OutputStream out = null;

    try {
        in = assetManager.open(UCCW_TEST_SKIN_APK);
        try {
            out = new FileOutputStream(pathToSkin);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }

        byte[] buffer = new byte[1024];
        int read;
        while ((read = in.read(buffer)) != -1) {
            out.write(buffer, 0, read);
        }

        in.close();
        in = null;

        out.flush();

        out.close();

        out = null;
    } catch (IOException e) {
        e.printStackTrace();
    }
}

/**
 * @param pathToSkin
 */
private void startAppInstaller(String pathToSkin) {
    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setDataAndType(Uri.fromFile(new File(pathToSkin)),
            "application/vnd.android.package-archive");
    startActivity(intent);
}

private boolean isSDcardAvailable() {
    String state = Environment.getExternalStorageState();
    return state.contentEquals(Environment.MEDIA_MOUNTED)
            || state.contentEquals(Environment.MEDIA_MOUNTED_READ_ONLY);
}
}

我尝试添加我发现的提出类似问题的人的代码,但正如我所说,我几乎没有任何 java 知识,其余的都是在 xml 中完成的。我的 ImageView2 必须链接到一个网站。

最佳答案

你可以这样做:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    context = this;
    setContentView(R.layout.main);
    findViewById(R.id.buttonRepairSkin).setOnClickListener(
            new OnClickListener() {

                @Override
                public void onClick(View v) {
                    showInstallableSkins();
                }

            });
    findViewById(R.id. imageView2).setOnClickListener(
        new OnClickListener() {
             @Override
             public void onClick(View v) {
                 Log.d(getClass().getSimpleName(), "in onClick");
                 Intent browserIntent = new Intent(Intent.ACTION_VIEW);
                 browserIntent.setData(Uri.parse(url_to_website));
                 startActivity(browserIntent);
             }

    });
}

关于java - Android ImageView 链接到网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21757098/

相关文章:

android - 通过 Android 应用程序将数据发布到 URL

linux - 在 Linux 上将 Google Plugin for Eclipse 安装到/opt 时出错

java - Kotlin 在 PasswordTransformationMethod 中崩溃,而 Java 工作正常

java - new Date(new Date().getTime()-25 * 24 * 60 * 60 * 1000) 得到了意外的日期

java - Android更改NavigationView中单个项目的背景颜色

java - 仅输入一个字符时 KeyAdapter 发生多个按键事件

java - 如何以编程方式查找 Eclipse 中正在运行的项目

java - 关于Spring事务传播的问题

java - 解析 java.text.SimpleDateFormat 时获取 java.lang.IllegalArgumentException : Illegal pattern character 'o' ?

android 数据库已经关闭 onResume