0

我有两个活动“主要”(其中有一个按钮)和“第二个”,我希望当我单击主要活动中的按钮时,应该启动第二个活动,但它应该像浏览器一样运行。表示启动第二个活动时应打开浏览器。

我的代码如下:
在我写的清单文件中

    <activity android:name=".Second">
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.BROWSABLE"/>
        </intent-filter>
    </activity>

在 Main.java 文件中,我编写了这样的事件处理程序

Button b = (Button) findViewById(R.id.button1);

b.setOnClickListener(new OnClickListener() {

         @Override
         public void onClick(View v) {
         // TODO Auto-generated method stub

         Intent intent = new Intent(Main.this, Second.class);
         startActivity(intent);
    }
});

首先,是否有可能是我想要的,如果是,那么我是否以正确的方式做这件事?如果我的问题很愚蠢,真的很抱歉,因为我是 Android 新手

4

4 回答 4

1

在你的第二个活动中写下这个。当您的第二个活动将调用它时,它将打开一个浏览器。

您也可以在 onClick() 中使用它。

startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com")));
于 2012-08-03T08:46:40.183 回答
1

当我开始学习 android 及其意图时,我发现它非常混乱。但是 Manifest 中的 BROWSABLE 类别执行以下操作。

浏览器可以安全地调用目标活动来显示链接引用的数据——例如,图像或电子邮件消息。

阅读更多:http: //developer.android.com/guide/components/intents-filters.html

其他两个答案打开标准网络浏览器并转到指定的地址。如果你想要一个自定义浏览器,让第二个活动像这个例子一样的 web 视图:

http://www.mkyong.com/android/android-webview-example/

祝你好运!

于 2012-08-03T08:52:36.973 回答
1
    public class WebDialog extends Dialog
{

    static final int                      BLUE                  = 0xFF6D84B4;
    static final float[]                  DIMENSIONS_DIFF_LANDSCAPE =
                                                                    { 20, 60 };
    static final float[]                  DIMENSIONS_DIFF_PORTRAIT  =
                                                                    { 40, 60 };
    static final FrameLayout.LayoutParams   FILL                    = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT);
    static final int                      MARGIN                    = 4;
    static final int                      PADDING                   = 2;
    static final String                   DISPLAY_STRING            = "touch";

    private String                        mUrl;
//  private DialogListener                mListener;
    private ProgressDialog                mSpinner;
    private WebView                       mWebView;
    private LinearLayout                  mContent;
    private TextView                      mTitle;

    public WebDialog(Context context, String url)
    {
        super(context);
        mUrl = url;
    }

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        mSpinner = new ProgressDialog(getContext());
        mSpinner.requestWindowFeature(Window.FEATURE_NO_TITLE);
        mSpinner.setMessage("Loading...");

        mContent = new LinearLayout(getContext());
        mContent.setOrientation(LinearLayout.VERTICAL);
        setUpTitle();
        setUpWebView();
        Display display = getWindow().getWindowManager().getDefaultDisplay();
        final float scale = getContext().getResources().getDisplayMetrics().density;
        int orientation = getContext().getResources().getConfiguration().orientation;
        float[] dimensions = (orientation == Configuration.ORIENTATION_LANDSCAPE) ? DIMENSIONS_DIFF_LANDSCAPE : DIMENSIONS_DIFF_PORTRAIT;
        addContentView(mContent, new LinearLayout.LayoutParams(display.getWidth() - ((int) (dimensions[0] * scale + 0.5f)), display.getHeight() - ((int) (dimensions[1] * scale + 0.5f))));
    }

    private void setUpTitle()
    {
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        Drawable icon = getContext().getResources().getDrawable(R.drawable.ic_launcher);
        mTitle = new TextView(getContext());
        mTitle.setText("Website");
        mTitle.setTextColor(Color.WHITE);
        mTitle.setTypeface(Typeface.DEFAULT_BOLD);
        mTitle.setBackgroundColor(BLUE);
        mTitle.setPadding(MARGIN + PADDING, MARGIN, MARGIN, MARGIN);
//      mTitle.setCompoundDrawablePadding(MARGIN + PADDING);
//      mTitle.setCompoundDrawablesWithIntrinsicBounds(icon, null, null, null);
        mContent.addView(mTitle);
    }

    private void setUpWebView()
    {
        mWebView = new WebView(getContext());
        mWebView.setVerticalScrollBarEnabled(false);
        mWebView.setHorizontalScrollBarEnabled(false);
        mWebView.setWebViewClient(new WebDialog.DialogWebViewClient());
        mWebView.getSettings().setJavaScriptEnabled(true);

        System.out.println(" mURL = "+mUrl);

        mWebView.loadUrl(mUrl);
        mWebView.setLayoutParams(FILL);
        mContent.addView(mWebView);
    }

    private class DialogWebViewClient extends WebViewClient
    {

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url)
        {
            view.loadUrl(url);

            return true;
        }

        @Override
        public void onReceivedError(WebView view, int errorCode, String description, String failingUrl)
        {
            super.onReceivedError(view, errorCode, description, failingUrl);
            WebDialog.this.dismiss();
        }

        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon)
        {
            super.onPageStarted(view, url, favicon);
            mSpinner.show();
        }

        @Override
        public void onPageFinished(WebView view, String url)
        {
            super.onPageFinished(view, url);
            String title = mWebView.getTitle();
            if (title != null && title.length() > 0)
            {
                mTitle.setText(title);
            }
            mSpinner.dismiss();
        }

    }
}
于 2012-08-03T09:31:21.830 回答
0

当单击主要活动上的按钮时,似乎您正试图将浏览器打开到特定页面。

如果是这种情况,您不需要第二个活动,您只需要执行以下操作:

Button b = (Button) findViewById(R.id.button1);

b.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com"));
        startActivity(i);
    }
}
于 2012-08-03T08:48:11.230 回答