项目咨询 tablayout 数据库 网络判断以及倒计时和侧边栏 基类 图片设置

1导入依赖

implementation 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
implementation 'com.android.support:design:28.0.0'
implementation project(':channelmanagement')
implementation project(':pulltorefresh_library')
implementation 'com.google.code.gson:gson:2.2.4'

2继承baseactivity

package com.example.lianyue;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.FragmentActivity;


public abstract class BaseActivity extends FragmentActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(bindLayout());
        initView();
        initData();
        bindEvent();
    }

    protected abstract int bindLayout();

    protected abstract void initView();

    protected abstract void initData();

    protected abstract void bindEvent();

}

3继承basefragment

package com.example.lianyue;

import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;


public abstract class BaseFragment extends Fragment {
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return inflater.inflate(bindLayout(),container,false);
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        initView();
        initData();
        bindEvent();
    }
    protected abstract int bindLayout();

    protected abstract void initView();

    protected abstract void initData();

    protected abstract void bindEvent();
}

4倒计时跳转布局

<?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"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/time"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_alignParentEnd="true"
        android:layout_marginTop="34dp"
        android:layout_marginEnd="40dp"
        android:textSize="20sp" />

    <ImageView
        android:id="@+id/image"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_centerInParent="true"
        android:src="@mipmap/ww"/>

</RelativeLayout>

5倒计时activity

package com.example.lianyue;

import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

import com.nostra13.universalimageloader.core.ImageLoader;

public class MainActivity extends BaseActivity {

    private TextView time;
    private ImageView image;
    private SharedPreferences sp;
    private int i=5;

    @Override
    protected int bindLayout() {
        return R.layout.activity_main;
    }

    @Override
    protected void initView() {
        time = findViewById(R.id.time);
        sp = getSharedPreferences("login", Context.MODE_PRIVATE);
        if(sp.getBoolean("第一次",false)){
            startActivity(new Intent(MainActivity.this, SecondActivity.class));
            i=-1;
            finish();
            return;
        }
        SharedPreferences.Editor edit = sp.edit();
        edit.putBoolean("第一次",true);
        edit.commit();
    }


    @Override
    protected void initData() {
        new Thread(){
            @Override
            public void run() {
                super.run();

                while (true){
                    try {
                        Thread.sleep(1000);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                    Message message = handler.obtainMessage();
                    message.obj=i;
                    message.what=1;
                    handler.sendMessage(message);
                    i--;
                    if(i<0){
                        break;
                    }

                }
            }
        }.start();
    }
    Handler handler=new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            int w = msg.what;
            if(w==1){
                int p=(Integer) msg.obj;
                if(p>=0){
                    time.setText(p+"S");
                    if (p==0){
                        Intent intent = new Intent(MainActivity.this, SecondActivity.class);
                        startActivity(intent);
                    }
                }
            }
        }
    };
    @Override
    protected void bindEvent() {
        time.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, SecondActivity.class);
                i=-1;
                startActivity(intent);
                return;
            }
        });
    }
}

6主页面布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <android.support.v4.widget.DrawerLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">
            <FrameLayout
                android:id="@+id/frag"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="1">
            </FrameLayout>
            <RadioGroup
                android:id="@+id/radioGroup"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal">
                <RadioButton
                    android:id="@+id/radio0"
                    android:layout_width="0dp"
                    android:layout_weight="1"
                    android:layout_height="wrap_content"
                    android:button="@null"
                    android:padding="5dp"
                    android:gravity="center"
                    android:background="@drawable/sel"
                    android:text="表格"/>
                <RadioButton
                    android:id="@+id/radio1"
                    android:layout_width="0dp"
                    android:layout_weight="1"
                    android:layout_height="wrap_content"
                    android:button="@null"
                    android:padding="5dp"
                    android:gravity="center"
                    android:background="@drawable/sel"
                    android:text="表格"/>
            </RadioGroup>
        </LinearLayout>
        <LinearLayout
            android:layout_width="320dp"
            android:layout_height="match_parent"
            android:orientation="vertical"
            android:background="#fff"
            android:layout_gravity="left">
            <ListView
                android:id="@+id/listView"
                android:layout_width="match_parent"
                android:layout_height="match_parent"></ListView>
        </LinearLayout>
    </android.support.v4.widget.DrawerLayout>

</LinearLayout>

7微信页面activity

package com.example.lianyue;

import android.app.Activity;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ListView;
import android.widget.RadioGroup;
import android.widget.Toast;

import com.example.lianyue.adapter.CeAdapter;
import com.example.lianyue.bean.JsonBean;
import com.example.lianyue.frag.FragList;
import com.example.lianyue.frag.FragNull;
import com.example.lianyue.http.Http;
import com.google.gson.Gson;

import java.util.ArrayList;


public class SecondActivity extends BaseActivity {

    private RadioGroup radioGroup;
    private FragList fragList;
    private FragNull fragNull;
    private ListView listView;
    private ArrayList<JsonBean.DataBean> list;
    private String str="http://api.expoon.com/AppNews/getNewsList/type/1/p/1";

    @Override
    protected int bindLayout() {
        return R.layout.activity_second;
    }

    @Override
    protected void initView() {
        radioGroup = findViewById(R.id.radioGroup);
        radioGroup.check(radioGroup.getChildAt(0).getId());
        listView = findViewById(R.id.listView);
    }

    @Override
    protected void initData() {
        FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
        fragList = new FragList();
        fragNull = new FragNull();
        transaction.add(R.id.frag,fragList);
        transaction.add(R.id.frag,fragNull);
        transaction.show(fragList).hide(fragNull);
        transaction.commit();
        boolean workConnected = Http.isWorkConnected(SecondActivity.this);
        if (workConnected){
            Http.httpAsyncTask(str, new Http.CallbackString() {
                @Override
                public void getData(String s) {
                    Gson gson = new Gson();
                    JsonBean bean = gson.fromJson(s, JsonBean.class);
                    list = bean.getData();
                    listView.setAdapter(new CeAdapter(SecondActivity.this,list));
                }
            });
        }else{
            Toast.makeText(this, "没有网络", Toast.LENGTH_SHORT).show();
        }
    }

    @Override
    protected void bindEvent() {
        radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                FragmentTransaction transaction1 = getSupportFragmentManager().beginTransaction();
                switch (checkedId){
                    case R.id.radio0:
                        transaction1.show(fragList).hide(fragNull);
                        break;
                    case R.id.radio1:
                        transaction1.show(fragNull).hide(fragList);
                }
                transaction1.commit();
            }
        });
    }
}

8第一个fragment布局和tablayout

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <android.support.design.widget.TabLayout
            android:id="@+id/tablayout"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content">
        </android.support.design.widget.TabLayout>
        <ImageView
            android:id="@+id/tabMenu"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="18dp"
            android:src="@mipmap/menu"/>
    </LinearLayout>
    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:background="@android:color/white" />

</LinearLayout>

9第一个frag

package com.example.lianyue.frag;

import android.content.Intent;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.view.View;

import com.example.lianyue.BaseFragment;
import com.example.lianyue.R;
import com.example.lianyue.adapter.MyPagerAdapter;
import com.example.lianyue.frag.frag.Frag01;
import com.example.lianyue.frag.frag.Frag02;
import com.qy.channel.ChannelActivity;
import com.qy.channel.app.ChannelApplication;
import com.qy.channel.bean.ChannelItem;
import com.qy.channel.bean.ChannelManage;
import com.qy.channel.db.DBUtil;

import java.util.ArrayList;


public class FragList extends BaseFragment {

    private TabLayout tabLayout;
    private ViewPager pager;
    private ArrayList<ChannelItem> userChannelList=new ArrayList<ChannelItem>();
    private ArrayList<Fragment> fragmentList;
    private MyPagerAdapter myPagerAdapter;

    @Override
    protected int bindLayout() {
        return R.layout.fraglist;
    }

    @Override
    protected void initView() {
        tabLayout = getActivity().findViewById(R.id.tablayout);
        pager = getActivity().findViewById(R.id.pager);
    }

    @Override
    protected void initData() {
        userChannelList = DBUtil.getTabData(getActivity());
        fragmentList = new ArrayList<>();
        for (int i=0;i<userChannelList.size();i++){
            ChannelItem channelItem = userChannelList.get(i);
            String getName = channelItem.getName();
            Frag01 frag01 = new Frag01();
            Frag02 frag02 = new Frag02();
            if ("头条".equals(getName)){
                fragmentList.add(frag01);
            }else{
                fragmentList.add(frag02);
            }
        }
        //设置适配器
        myPagerAdapter = new MyPagerAdapter(getActivity().getSupportFragmentManager(), fragmentList, userChannelList);
        pager.setAdapter(myPagerAdapter);
        //绑定
        tabLayout.setupWithViewPager(pager);

    }

    @Override
    protected void bindEvent() {
        //1点击跳转频道管理
        getActivity().findViewById(R.id.tabMenu).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //2跳转activity
                Intent intent=new Intent(getActivity(), ChannelActivity.class);
                //3跳转回传
                startActivityForResult(intent,0);
            }
        });

    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        //4判断是不是我们的回传值 回传值是0
        if (resultCode==0){
            //5查找数据库中的数据,找到我们要展示的tab标签
            userChannelList = DBUtil.getTabData(getActivity());
            //6遍历数据
            for (int i=0;i<userChannelList.size();i++){
                ChannelItem channelItem =(ChannelItem) userChannelList.get(i);
                String tabName = channelItem.getName();
                //9把数据添加到tab中
                tabLayout.addTab(tabLayout.newTab().setText(tabName));
                //设置fragment
                if ("头条".equals(tabName)){
                    fragmentList.add(new Frag01());
                }else{
                    fragmentList.add(new Frag02());
                }
            }
            myPagerAdapter = new MyPagerAdapter(getActivity().getSupportFragmentManager(), fragmentList, userChannelList);
            pager.setAdapter(myPagerAdapter);
            //绑定
            tabLayout.setupWithViewPager(pager);
        }
    }
}

10prage适配器

package com.example.lianyue.adapter;

import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;

import com.qy.channel.bean.ChannelItem;

import java.util.ArrayList;


public class MyPagerAdapter extends FragmentPagerAdapter {
    private ArrayList<ChannelItem> userChannelList;
    private ArrayList<Fragment> fragmentList;

    public MyPagerAdapter(FragmentManager fm, ArrayList<Fragment> fragmentList, ArrayList<ChannelItem> userChannelList) {
        super(fm);
        this.fragmentList=fragmentList;
        this.userChannelList=userChannelList;
    }

    @Override
    public Fragment getItem(int position) {
        return fragmentList.get(position);
    }

    @Override
    public int getCount() {
        return userChannelList.size();
    }

    @Nullable
    @Override
    public CharSequence getPageTitle(int position) {
        return userChannelList.get(position).getName();
    }
}

11第一个tab fragment布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <com.handmark.pulltorefresh.library.PullToRefreshListView
        android:id="@+id/pull"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </com.handmark.pulltorefresh.library.PullToRefreshListView>
</LinearLayout>

12tab 代码

package com.example.lianyue.frag.frag;

import android.content.ContentValues;
import android.database.Cursor;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import android.widget.Toast;

import com.example.lianyue.BaseFragment;
import com.example.lianyue.R;
import com.example.lianyue.adapter.MyAdapter;
import com.example.lianyue.bean.JsonBean;
import com.example.lianyue.http.Http;
import com.example.lianyue.sql.Dao;
import com.google.gson.Gson;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshListView;

import java.util.ArrayList;

/**
 * @Auther: 薄帅北
 * @Date: 2019/1/15 14:52:34
 * @Description:
 */
public class Frag01 extends BaseFragment {

    private PullToRefreshListView listp;
    private String str="http://api.expoon.com/AppNews/getNewsList/type/1/p/1";
    private ArrayList<JsonBean.DataBean> list;
    private MyAdapter myAdapter;
    private Dao dao;

    @Override
    protected int bindLayout() {
        return R.layout.frag01;
    }

    @Override
    protected void initView() {
        listp = getActivity().findViewById(R.id.pull);
        listp.setMode(PullToRefreshBase.Mode.BOTH);
        listp.setSaveFromParentEnabled(true);
        dao = new Dao(getActivity());
    }

    @Override
    protected void initData() {
        boolean workConnected = Http.isWorkConnected(getActivity());
        if(workConnected){
            Http.httpAsyncTask(str, new Http.CallbackString() {
                @Override
                public void getData(String s) {
                    Gson gson = new Gson();
                    JsonBean bean = gson.fromJson(s, JsonBean.class);
                    list = bean.getData();
                    //Toast.makeText(getActivity(), ""+list.toString(), Toast.LENGTH_SHORT).show();
                    if(dao.query("json",null,null,null,null,null,null).moveToFirst()){

                    }else{
                        for (JsonBean.DataBean jsonbean:list){
                            ContentValues values = new ContentValues();
                            values.put("title",jsonbean.getNews_title());
                            values.put("img",jsonbean.getPic_url());
                            dao.insert("json",null,values);
                        }
                    }
                    myAdapter=new MyAdapter(getActivity(),list);
                    listp.setAdapter(myAdapter);
                }
            });
        }else{
            Cursor query = dao.query("json", null, null, null, null, null, null);
            list=new ArrayList<>();
            if(query.moveToFirst()){
                do {
                    String title = query.getString(query.getColumnIndex("title"));
                    String img = query.getString(query.getColumnIndex("img"));
                    list.add(new JsonBean.DataBean(title,img));
                }while (query.moveToNext());
            }
            query.close();;
            Toast.makeText(getActivity(), "没有网络", Toast.LENGTH_SHORT).show();
            myAdapter=new MyAdapter(getActivity(),list);
            listp.setAdapter(myAdapter);
        }
    }

    @Override
    protected void bindEvent() {
        listp.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
            @Override
            public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
                if (Http.isWorkConnected(getActivity())){
                    Http.httpAsyncTask(str, new Http.CallbackString() {

                        @Override
                        public void getData(String s) {
                            Gson gson = new Gson();
                            JsonBean bean = gson.fromJson(s, JsonBean.class);
                            list = bean.getData();
                            myAdapter = new MyAdapter(getActivity(),list);
                            listp.setAdapter(myAdapter);
                            listp.onRefreshComplete();
                        }
                    });
                }else{
                    Toast.makeText(getActivity(), "没有网络", Toast.LENGTH_SHORT).show();
                }
            }

            @Override
            public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
                if (Http.isWorkConnected(getActivity())){
                    Http.httpAsyncTask(str, new Http.CallbackString() {
                        @Override
                        public void getData(String s) {
                            Gson gson = new Gson();
                            JsonBean bean = gson.fromJson(s, JsonBean.class);
                            ArrayList<JsonBean.DataBean> data = bean.getData();
                            list.addAll(data);
                            myAdapter.notifyDataSetChanged();
                            listp.onRefreshComplete();
                        }
                    });
                }else{
                    Toast.makeText(getActivity(), "没有网络", Toast.LENGTH_SHORT).show();
                }
            }
        });
    }
}

13图片设置app包

package com.example.lianyue.app;

import android.app.Application;
import android.graphics.Bitmap;
import android.os.Environment;

import com.example.lianyue.R;
import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiskCache;
import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.display.CircleBitmapDisplayer;
import com.qy.channel.app.ChannelApplication;

import java.io.File;

public class App extends ChannelApplication {
    @Override
    public void onCreate() {
        super.onCreate();
        String path = Environment.getExternalStorageDirectory().getParentFile() + "TuPian";
        File file = new File(path);
        DisplayImageOptions options = new DisplayImageOptions.Builder()
                .showImageOnLoading(R.mipmap.zhan)
                .showImageOnFail(R.mipmap.shibai)
                .displayer(new CircleBitmapDisplayer())
                .bitmapConfig(Bitmap.Config.ARGB_8888)
                .build();
        ImageLoaderConfiguration  loaderConfiguration = new ImageLoaderConfiguration.Builder(this)
                .defaultDisplayImageOptions(options)
                .diskCache(new UnlimitedDiskCache(file))
                .diskCacheFileNameGenerator(new Md5FileNameGenerator())
                .build();
        ImageLoader imageLoader=ImageLoader.getInstance();
        imageLoader.init(loaderConfiguration);
    }
}

14http网络判断包

package com.example.lianyue.http;

import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.AsyncTask;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;

import javax.security.auth.callback.Callback;


public class Http {
    //判断网络
    public static boolean isWorkConnected(Context context){
        if(context!=null){
            ConnectivityManager manager =(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo info = manager.getActiveNetworkInfo();
            if(info!=null){
                return info.isAvailable();
            }
        }
        return false;
    }
    //创建网络接口
    public static void httpAsyncTask(String strUrl,final CallbackString backString){
        new AsyncTask<String, Integer, String>() {
            @Override
            protected String doInBackground(String... strings) {
                return requestHttpGet(strings[0]);
            }

            @Override
            protected void onPostExecute(String s) {
                super.onPostExecute(s);
                backString.getData(s);
            }
        }.execute(strUrl);
    }
    public interface CallbackString{
        void getData(String s);
    }
    public static String requestHttpGet(String strUrl){
        try {
            URL url = new URL(strUrl);
            HttpURLConnection connection =(HttpURLConnection) url.openConnection();
            connection.setRequestMethod("GET");
            connection.setConnectTimeout(5000);
            connection.setReadTimeout(5000);
            int code = connection.getResponseCode();
            if(code==200){
                InputStream stream = connection.getInputStream();
                BufferedReader reader = new BufferedReader(new InputStreamReader(stream, "utf-8"));
                StringBuilder builder = new StringBuilder();
                String str="";
                while ((str=reader.readLine())!=null){
                    builder.append(str);
                }
                return builder.toString();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}

15数据库

package com.example.lianyue.sql;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.v4.app.FragmentActivity;


public class Dao {

    private final SQLiteDatabase db;

    public Dao(Context context) {
        MySqlite mysqlite=new MySqlite(context);
        db = mysqlite.getWritableDatabase();
    }
    public long insert(String table, String nullColumnHack, ContentValues values) {
        return db.insert(table,nullColumnHack,values);
    }
    public Cursor query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy) {
        return db.query(table,columns,selection,selectionArgs,groupBy,having,orderBy);
    }
}

16数据库

package com.example.lianyue.sql;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class MySqlite extends SQLiteOpenHelper {
    public MySqlite(Context context) {
        super(context, "bw.db", null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("create table json(id integer primary key autoincrement,title text,img text)");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}

17注册

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET"/>
android:name=".app.App"
<activity android:name=".SecondActivity"/>

猜你喜欢

转载自blog.csdn.net/weixin_44258719/article/details/86536074
今日推荐