android - Android 应用程序在 API_Lev 23 中不断崩溃
问题描述
我是安卓开发新手
我在 android 中制作了一个简单的应用程序(对于 api_version 大于 23),它获取所有正在运行的应用程序的名称。但该应用程序无法正常运行。当我单击按钮时,在“onClickListner”中注册的功能不起作用。
package com.sakthi.appban;
import androidx.appcompat.app.AppCompatActivity;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import java.util.List;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn = findViewById(R.id.button);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
displayAllApps();
}
});
}
private void displayAllApps(){
PackageManager pm = getPackageManager();
List<ApplicationInfo> installedApplications = pm.getInstalledApplications(PackageManager.GET_META_DATA);
for(ApplicationInfo application : installedApplications){
Toast.makeText(this, application.name, Toast.LENGTH_SHORT).show();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
Toast.makeText(this, "Task Ended", Toast.LENGTH_SHORT).show();
}
希望我能得到帮助
提前致谢
解决方案
如果您运行此代码,我认为您可能已经在日志中看到这些消息,当您单击按钮时会收到此错误
错误:
java.lang.IllegalStateException:您必须设置文本或视图
对于某些应用程序,此处application.name
可能会为空。这可能IllegalStateException
是因为您将 null 传递给 Toast。
要解决此问题,只需将 if 条件添加到 null 检查,如下所示:
if(application.name != null) {
Toast.makeText(this, application.name, Toast.LENGTH_SHORT).show();
}
然后它应该工作。
更新:
您可以从导致 ANR 的代码中删除此代码:
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
推荐阅读
- sql-server - 如何在动态sql中使用表变量?或者从用户定义的表类型创建临时表?
- javascript - 在另一个文本框或 div 中写入内容后清除一个文本框或 div
- field - 在主题中显示自定义字段 (processwire)
- powershell - 运行后台作业的 PowerShell 任务 (Start-Job)
- r - R的省略号忽略了传递的参数
- javascript - 获取每个页面的标题并显示在 iframe 的 header 中
- cassandra - 在 windows 10 上启动 Cassandra 时遇到异常
- android - 我可以扩展一个简单的对象类来创建 Room 数据库对象吗?
- javascript - Bootstrap - 一次只在特定部分显示一个折叠
- nativescript - 禁用视图的 nativescript IQKeyboardManager 插件