Android第一行代码第二版遇到的问题及解决方法

683 阅读1分钟

​​​本文已参与「新人创作礼」活动,一起开启掘金创作之路。

第一行代码5.2中解决NetworkInfo过时的问题

 书中代码段中NetworkInfo打上后显示过时,那我们就直接不用也罢。

我们改为:

ConnectivityManager connectivityManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
            if(connectivityManager.getActiveNetwork() != null){
                Toast.makeText(context,"Network is available",Toast.LENGTH_SHORT).show();
            }else{
                Toast.makeText(context,"Network is unavailable:",Toast.LENGTH_SHORT).show();
            }

演示效果:

图一是wifi&流量都开,图二是只开流量,图三是都不开。

注:当关掉wifi时会有一瞬间是unavailable,然后接着变成了available

​            

 

\

第一行代码5.3.1无法接收到自定义广播

​ ​

在MainActivity中加

button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent("com.example.asus.broadcasttest.MY_BROADCAST");

                intent.setComponent(new ComponentName("com.example.asus.broadcasttest",
                        "com.example.asus.broadcasttest.MyBroadcastReceiver"));

                sendBroadcast(intent);
            }
        });

注意工程路径

​解决第一行代码第二版7.4自定义内容提供器无法运行

 一、问题描述

       首先我不是用的模拟器,而是用的手机调试的。将ProviderTest下载到手机端后点击按钮会自动退出程序。

二、解决问题

1.首先排除打错字,注意我们的工程一般会默认加了个用户名,所以凡是写路径的代码都别忘了加个用户名。比如:

//DataBaseTest工程中
public static final String AUTHORITY = "com.example.asus.databasetest.provider";
//ProviderTest工程中
Uri uri = Uri.parse("content://com.example.asus.databasetest.provider/book");

然后就是版本的问题,书中用的

compile 'com.android.support:appcompat-v7:24.2.1'

我用的是

compile 'com.android.support:appcompat-v7:26.0.0-alpha1'

网上有的说是版本的问题,那就先按照版本的问题解决。

2.如果不是打错字的问题,也不是版本的问题,那就是下面我解决的办法。

首先你得运行着DataBaseTest工程,然后再运行ProviderTest工程。也就是如下图所示:

这样在手机端操作ADD TO BOOK就没有啥问题。 

点击添加和查询后的Lgcat输出为(把Database中所有的按钮逻辑都注释掉):

 更新的数据:

        别问我为啥,我也刚学三个星期。反正就是在运行第一个后运行第二个才没有问题。如果有知道的可以在评论区留言哈哈。 

        顺便说一句,非要说为啥的话,可能是这样(品品这段话,反正我是品不出来哈哈)

\