我对Android程序相当陌生。我今天下载了Android并启动了一个新项目。我使用以下代码向表单添加了一个空活动,并提供了文本视图。
XML:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:id="@+id/textView1"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />主要代码:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
int flags = PackageManager.GET_META_DATA |
PackageManager.GET_SHARED_LIBRARY_FILES |
PackageManager.GET_UNINSTALLED_PACKAGES;
PackageManager pm = getPackageManager();
List<ApplicationInfo> applications = pm.getInstalledApplications(flags);
List<String> applicationsInstalled = new ArrayList<String>();
for (ApplicationInfo appInfo : applications) {
if ((appInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 1) {
// System application
} else {
// Installed by user
applicationsInstalled.add(appInfo.name);
}
}
TextView tv1 = (TextView)findViewById(R.id.textView1);
for (String app : applicationsInstalled)
{
tv1.append(app);
}
setContentView(R.layout.activity_main);
}
}出于某种原因,应用程序一启动就会崩溃。如果我删除我写的代码,并且只保留到
setContentView(R.layout.activity_main);它工作得很好,但却是空的。
编辑: Stacktrace https://pastebin.com/dHHygFkQ
发布于 2016-12-04 16:07:58
如注释中所述,删除第二个setContentView。
您正在将null传递给tv1.append。当appInfo.name返回null时。请参阅PackageManager's applicationInfo.name is always null
用途:(String)pm.getApplicationLabel(appInfo)。
例如:
applicationsInstalled.add((String)pm.getApplicationLabel(appInfo))
https://stackoverflow.com/questions/40960410
复制相似问题