Android Activity基于互联网可用性发布

时间:2015-10-18 06:25:18

标签: android android-intent android-activity

嗨开发人员我是Android应用程序开发的新手。

我的要求是基于互联网可用性,我必须展示不同的活动。

我有两个屏幕A和B.

当互联网可用时,我直接导航到屏幕B.

当互联网不可用时,它将显示屏幕A.

它总是检查互联网可用性,如果没有,它总是显示屏幕A.

实现此功能的最佳方法是什么。

2 个答案:

答案 0 :(得分:1)

ConnectivityManager的getActiveNetworkInfo()方法返回一个NetworkInfo实例,表示它可以找到的第一个连接的网络接口,如果没有连接任何接口,则返回null。检查此方法是否返回null应足以判断是否有可用的Internet连接。

import java.awt.*;
import java.awt.event.*;
import java.awt.geom.Line2D;
import javax.swing.*;

public class testHome {

    private JFrame frame;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    testHome window = new testHome();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the application.
     */
    public testHome() {
        initialize();
    }

    /**
     * Initialize the contents of the frame.
     */
    private void initialize() {
        frame = new JFrame();
        frame.setBounds(100, 100, 450, 300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel panel = new myPanel();
        frame.getContentPane().add(panel, BorderLayout.CENTER);
    }
}

class myPanel extends JPanel {

    MyComponent comp;

    public myPanel() {
        super(null);
        comp = new MyComponent(5, 5);
        this.add(comp);
        revalidate();
    }

    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2d = (Graphics2D) g;
        Line2D.Double line = new Line2D.Double(10, 10, comp.getX(), comp.getY());
        System.out.println(comp.getX() + " " + comp.getY());
        g2d.draw(line);
    }
}

class MyComponent extends JComponent implements MouseListener, MouseMotionListener {

    int x;
    int y;

    int mx;
    int my;

    public MyComponent(int x, int y) {
        this.setVisible(true);
        this.setBounds(x, y, 15, 15);
        this.x = x;
        this.y = y;
        addMouseMotionListener(this);
    }

    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2d = (Graphics2D) g;
        g2d.setColor(Color.black);
        g2d.fillRect(this.x, this.y, 15, 15);
    }

    @Override
    public void mouseDragged(MouseEvent e) {
        // TODO Auto-generated method stub
        System.out.println("dragging");
        int dx = e.getX() - mx;
        int dy = e.getY() - my;
        this.setBounds(this.getX() + dx, this.getY() + dy, 15, 15);
    }

    @Override
    public void mousePressed(MouseEvent e) {
        mx = e.getX();
        my = e.getY();
    }

    @Override
    public void mouseMoved(MouseEvent e) {}

    @Override
    public void mouseClicked(MouseEvent e) {}

    @Override
    public void mouseEntered(MouseEvent e) {}

    @Override
    public void mouseExited(MouseEvent e) {}

    @Override
    public void mouseReleased(MouseEvent e) {}
}

您还需要:

private boolean isNetworkAvailable() {
    ConnectivityManager connectivityManager 
          = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
    return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}

现在,在OnCreate()

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

答案 1 :(得分:0)

无需保留两个屏幕/活动来检查互联网可用性 它可以使用单个屏幕/活动来实现。

根据设备上的互联网可用性,您需要隐藏/显示元素技巧。

这就是我通常在所有Android应用程序中执行的操作:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorWhite">


<ListView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/item_list"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"/>
<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:id="@+id/rl_internet"
    android:visibility="gone">
    <ImageView
        android:layout_width="150dp"
        android:layout_height="150dp"
        android:layout_centerHorizontal="true"
        android:src="@drawable/connection_lost"
        android:id="@+id/internet_lost_img"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="CONNECTION LOST!!"
        android:layout_below="@+id/internet_lost_img"
        android:layout_centerHorizontal="true"
        android:textColor="@color/colorBlack"
        android:textStyle="bold"
        android:textSize="18sp"
        android:layout_marginTop="15dp"
        android:id="@+id/connection_lost_header"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/connection_lost_header"
        android:layout_marginTop="7dp"
        android:text="Please check Internet Settings"
        android:textColor="@color/colorGray"
        android:textSize="15sp"
        android:textStyle="bold"
        android:layout_centerHorizontal="true"
        android:id="@+id/connection_check_txt"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/connection_check_txt"
        android:id="@+id/OR_txt"
        android:text="OR"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="7dp"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/OR_txt"
        android:textColor="@color/colorWhite"
        android:background="@drawable/btn_back"
        android:text="RE-TRY"
        android:textSize="16sp"
        android:padding="2dp"
        android:layout_marginTop="10dp"
        android:id="@+id/retry"
        android:layout_centerHorizontal="true"/>

</RelativeLayout>

</RelativeLayout>

正如您所看到的,名为“rl_internet”的内部相对布局包含显示互联网不可用的布局,其中可见性设置为'消失'

您检查onCreate()方法中是否有Internet可用,如果互联网不可用,您基本上将该相对布局的可见性设置为可见,并使屏幕上的其余元素不可见。

如果互联网可用:
   无需做任何事情 其他:
   rl_internet.setVisibility(View.VISIBLE)

希望你明白这个想法!