简单Android程序错误 package com.example.enable_应用程序; 导入java.io.IOException; 导入java.util.List; 导入android.app.Activity; 导入android.content.pm.ApplicationInfo; 导入android.content.pm.PackageManager; 导入android.os.Bundle; 导入android.util.Log; 导入android.view.Menu; 导入android.view.MenuItem; 导入android.widget.TextView; 公共类MainActivity扩展活动实现可运行{ 私有运行时运行; 私有字符串“正在进行什么”\u on=“程序已启动:\n”; 私有文本视图t; @凌驾 创建时受保护的void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); t=(TextView)findViewById(R.id.textView1); t、 setText(正在进行什么); run=Runtime.getRuntime(); 螺纹t1=新螺纹(此); t1.start(); } @凌驾 公共布尔onCreateOptions菜单(菜单){ 返回true; } @凌驾 公共布尔值onOptionsItemSelected(菜单项项){ 返回super.onOptionsItemSelected(项目); } @凌驾 public void run(){ PackageManager pm=getPackageManager(); List packages=pm.getinstalledApplication(PackageManager.GET_元数据); 适用于(ApplicationInfo i:软件包){ 字符串current_package=i.packageName; 试一试{ 正在进行的内容+=“\n启用包:”+当前包; Log.v(“字符串”,正在进行什么); runOnUiThread(新的Runnable(){ 公开募捐{ t、 使无效(); }}); run.exec(“su|pm enable”+当前_包).waitFor(); Log.v(“启用:”,即packageName); }捕获(IOE异常){ 正在进行什么\u+=“\n错误包:“+current\u package+”:“+e.getMessage().toString(); Log.v(“字符串”,正在进行什么); runOnUiThread(新的Runnable(){ 公开募捐{ t、 使无效(); }}); Log.v(“错误:”,例如getMessage().toString()); }捕捉(中断异常e){ 正在进行什么\u+=“\n错误包:“+current\u package+”:“+e.getMessage().toString(); Log.v(“字符串”,正在进行什么); runOnUiThread(新的Runnable(){ 公开募捐{ t、 使无效(); }}); Log.v(“错误:”,例如getMessage().toString()); } } } }
所以我正在清理我的硬盘,我找到了这个程序并运行了它,但屏幕上并没有输出,它只显示程序启动了: 在控制台中,它一个接一个地启用应用程序,所以为什么会发生这种情况 以下是xml:简单Android程序错误 package com.example.enable_应用程序; 导入java.io.IOException; 导入java.util.List; 导入android.app.Activity; 导入android.content.pm.ApplicationInfo; 导入android.content.pm.PackageManager; 导入android.os.Bundle; 导入android.util.Log; 导入android.view.Menu; 导入android.view.MenuItem; 导入android.widget.TextView; 公共类MainActivity扩展活动实现可运行{ 私有运行时运行; 私有字符串“正在进行什么”\u on=“程序已启动:\n”; 私有文本视图t; @凌驾 创建时受保护的void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); t=(TextView)findViewById(R.id.textView1); t、 setText(正在进行什么); run=Runtime.getRuntime(); 螺纹t1=新螺纹(此); t1.start(); } @凌驾 公共布尔onCreateOptions菜单(菜单){ 返回true; } @凌驾 公共布尔值onOptionsItemSelected(菜单项项){ 返回super.onOptionsItemSelected(项目); } @凌驾 public void run(){ PackageManager pm=getPackageManager(); List packages=pm.getinstalledApplication(PackageManager.GET_元数据); 适用于(ApplicationInfo i:软件包){ 字符串current_package=i.packageName; 试一试{ 正在进行的内容+=“\n启用包:”+当前包; Log.v(“字符串”,正在进行什么); runOnUiThread(新的Runnable(){ 公开募捐{ t、 使无效(); }}); run.exec(“su|pm enable”+当前_包).waitFor(); Log.v(“启用:”,即packageName); }捕获(IOE异常){ 正在进行什么\u+=“\n错误包:“+current\u package+”:“+e.getMessage().toString(); Log.v(“字符串”,正在进行什么); runOnUiThread(新的Runnable(){ 公开募捐{ t、 使无效(); }}); Log.v(“错误:”,例如getMessage().toString()); }捕捉(中断异常e){ 正在进行什么\u+=“\n错误包:“+current\u package+”:“+e.getMessage().toString(); Log.v(“字符串”,正在进行什么); runOnUiThread(新的Runnable(){ 公开募捐{ t、 使无效(); }}); Log.v(“错误:”,例如getMessage().toString()); } } } },android,Android,所以我正在清理我的硬盘,我找到了这个程序并运行了它,但屏幕上并没有输出,它只显示程序启动了: 在控制台中,它一个接一个地启用应用程序,所以为什么会发生这种情况 以下是xml: package com.example.enable_apps; import java.io.IOException; import java.util.List; import android.app.Activity; import android.content.pm.ApplicationInfo; impo
package com.example.enable_apps;
import java.io.IOException;
import java.util.List;
import android.app.Activity;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;
public class MainActivity extends Activity implements Runnable{
private Runtime run;
private String what_is_going_on="Program Started:\n";
private TextView t;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
t=(TextView) findViewById(R.id.textView1);
t.setText(what_is_going_on);
run=Runtime.getRuntime();
Thread t1= new Thread(this);
t1.start();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
return super.onOptionsItemSelected(item);
}
@Override
public void run() {
PackageManager pm = getPackageManager();
List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);
for (ApplicationInfo i : packages){
String current_package = i.packageName;
try {
what_is_going_on+="\nenabling package: "+current_package;
Log.v("string", what_is_going_on);
runOnUiThread(new Runnable(){
public void run(){
t.invalidate();
}});
run.exec("su | pm enable "+current_package).waitFor();
Log.v("enabled: ",i.packageName);
} catch (IOException e) {
what_is_going_on+="\nerror package: "+current_package+": "+e.getMessage().toString();
Log.v("string", what_is_going_on);
runOnUiThread(new Runnable(){
public void run(){
t.invalidate();
}});
Log.v("error: ",e.getMessage().toString());
} catch (InterruptedException e) {
what_is_going_on+="\nerror package: "+current_package+": "+e.getMessage().toString();
Log.v("string", what_is_going_on);
runOnUiThread(new Runnable(){
public void run(){
t.invalidate();
}});
Log.v("error: ",e.getMessage().toString());
}
}
}
}
屏幕上没有输出,只显示程序已启动:
否,显示了输出。您看到这一点是因为您的textView
setText带有“程序已启动:”
尝试在TextView
中添加一些背景色,您将看到TextView
更改
文本视图中的文本
替换
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="top"
tools:context="com.example.enable_apps.MainActivity" >
<ScrollView
android:id="@+id/scrollView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="TextView" />
</LinearLayout>
</ScrollView>
</RelativeLayout>
到
将所有句子添加到“
模拟器显示了吗?当程序启动时,它会显示“program started:”仅此而已,在logcat中,它会显示详细信息,然后程序也被启用,因此它肯定能工作,但屏幕上没有输出:((((但是后来我更新了线程中的文本,textView不也应该更新吗?在程序中有一行代码what_'s going_on+=”\nenabling package:“+current_package;试试what_'s going_on=“HELLO WORLD”
,看看。在所有地方都将其更改为HELLO WORLD?是的!我认为t.invalidate()是一个不执行任何操作的伪函数,将其更改为t.setText(what_is_going_on);并填充屏幕!!
private String what_is_going_on="Program Started:\n";
private String what_is_going_on="Hello Worldenabling package: androidenabling package: android.googleSearch.googleSearchWidget ";