Android第一行代码第二版过时操作解决方法
Posted 哈喽喔德
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android第一行代码第二版过时操作解决方法相关的知识,希望对你有一定的参考价值。
(本文解决方法非原创,是结合大佬的博客的汇总)
P173代码中NetworkInfo过时
NetworkInfo在android10之后被弃用,改用NetworkCapabilities替代
class NetworkChangeReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkCapabilities networkCapabilities = connectivityManager.getNetworkCapabilities(connectivityManager.getActiveNetwork());
if (networkCapabilities!=null){
Toast.makeText(context, "network is available", Toast.LENGTH_SHORT).show();
}else {
Toast.makeText(context, "network is unavailable", Toast.LENGTH_SHORT).show();
}
}
}
P179代码无法发送自定义标准广播
Android8.0后,广播发送、接受更加严格,需要加入Component参数;在本地广播的案例代码上不使用Component也可以弹出Toast
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent("com.swpuiot.broadcast.MY_BROADCAST");
intent.setComponent(new ComponentName("包名","完整路径广播接收器名"));
sendBroadcast(intent);
}
});
}
P285 通知无法创建
Android8.0引入了通知渠道,如果在8.0以上版本实现通知,需要创建一个NotificationChannel对象
NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
//判断Android版本是否高于8.0
if (Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
NotificationChannel notificationChannel = new NotificationChannel("id1", "name", NotificationManager.IMPORTANCE_HIGH);
if (manager != null) {
manager.createNotificationChannel(notificationChannel);
}
}
Notification notification = new NotificationCompat.Builder(this, "id1")
.setContentTitle()
.setContentText()
.setWhen()
.setSmallIcon()
.setLargeIcon()
.build();
manager.notify(1,notification);
使用NotificationChannel的构造方法创建时,需要传入三个参数:(1)唯一识别的id(2)对象名字(3)通知重要程度(如下):
IMPORTANCE_NONE关闭通知
IMPORTANCE_MIN开启通知,不会弹出,但没有提示音,状态栏中无显示
IMPORTANCE_LOW开启通知,不会弾出,不发出提示音,状态栏中显示
IMPORTANCE_DEFAULT开启通知知,不会弹出,发出提示音,状态栏中显示
IMPORTANCE_HIGH开启通知知,会弹出,发出提示音,状态栏中显示
P343异步消息处理
创建Handler对象时采用带下述参数的构造方法
public static final int UPDATE_TEXT=1;
private TextView text;
private Handler handler = new Handler(Looper.getMainLooper()){
@Override
public void handleMessage(@NonNull Message msg) {
switch (msg.what){
case UPDATE_TEXT:
text.setText("Hello Android!");
break;
default:
break;
}
}
};
P411Toolbar支持库的改变
原文要求使用android.support.v7.widget.Toolbar
。但是在API28后就不支持了,转向androidx
此处应该调用androidx.appcompat.widget.Toolbar
以上是关于Android第一行代码第二版过时操作解决方法的主要内容,如果未能解决你的问题,请参考以下文章
第一行代码第二版(郭霖著)笔记之第三章(UI开发的点点滴滴)
Android LBS 百度地图(参考: 《第一行代码》第二版(郭霖著)11.3.4 显示看得懂的定位信息:准确文字地址)