0

我收到 FATAL Exception 主要错误。有什么帮助吗?

这是代码:

私人无效复制流(字符串资产文件名,字符串outFileName)抛出IOException {

      Process mSuProcess;
      mSuProcess = Runtime.getRuntime().exec("su");
      ContextWrapper myContext = null;
                  InputStream myInput = myContext.getAssets().open(assetFilename);

      OutputStream myOutput = new FileOutputStream(outFileName);

      //transfer bytes from the inputfile to the outputfile
      byte[] buffer = new byte[2048];
      int length;
      while ((length = myInput.read(buffer))>0){
          myOutput.write(buffer, 0, length);
      }

      //Close the streams
      myOutput.flush();
      myOutput.close();
      myInput.close();

  }


public void copyon(View view) throws IOException
{
  copyStream("floaton.xml","/system/etc/excluded-input-devices.xml"); 

}

public void copyoff(View view) throws IOException
{
 copyStream("floatoff.xml","/system/etc/excluded-input-devices.xml");

}

和logcat

09-16 19:52:26.654: E/AndroidRuntime(294):FATAL EXCEPTION: main 09-16 19:52:26.654: E/AndroidRuntime(294):java.lang.IllegalStateException: 无法执行活动 09 的方法-16 19:52:26.654: E/AndroidRuntime(294):at android.view.View$1.onClick(View.java:2144) 09-16 19:52:26.654:E/AndroidRuntime(294):at android. view.View.performClick(View.java:2485) 09-16 19:52:26.654: E/AndroidRuntime(294):at android.view.View$PerformClick.run(View.java:9080) 09-16 19: 52:26.654: E/AndroidRuntime(294):at android.os.Handler.handleCallback(Handler.java:587) 09-16 19:52:26.654:E/AndroidRuntime(294):at android.os.Handler.dispatchMessage (Handler.java:92) 09-16 19:52:26.654: E/AndroidRuntime(294):at android.os.Looper.loop(Looper.java:123) 09-16 19:52:26.654: E/AndroidRuntime (294): 在 android.app.ActivityThread.main(ActivityThread.java:3683) 09-16 19:52:26.654: E/AndroidRuntime(294):at java.lang.reflect.Method.invokeNative(Native Method) 09-16 19:52:26.654: E/AndroidRuntime(294):在 java.lang.reflect.Method.invoke(Method.java:507) 09-16 19:52:26.654: E/AndroidRuntime(294):at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit. java:839) 09-16 19:52:26.654: E/AndroidRuntime(294):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 09-16 19:52:26.654: E/ AndroidRuntime(294):at dalvik.system.NativeStart.main(Native Method) 09-16 19:52:26.654: E/AndroidRuntime(294):Caused by: java.lang.reflect.InvocationTargetException 09-16 19:52: 26.654: E/AndroidRuntime(294):at java.lang.reflect.Method.invokeNative(Native Method) 09-16 19:52:26.654:E/AndroidRuntime(294):at java.lang.reflect.Method.invoke(方法.java:507) 09-16 19:52:26。654: E/AndroidRuntime(294):at android.view.View$1.onClick(View.java:2139) 09-16 19:52:26.654: E/AndroidRuntime(294): ... 11 更多 09-16 19 :52:26.654: E/AndroidRuntime(294): 由: java.io.IOException: Broken pipe 09-16 19:52:26.654: E/AndroidRuntime(294): at org.apache.harmony.luni.platform 引起。 OSFileSystem.write(Native Method) 09-16 19:52:26.654: E/AndroidRuntime(294): at dalvik.system.BlockGuard$WrappedFileSystem.write(BlockGuard.java:171) 09-16 19:52:26.654: E /AndroidRuntime(294):at java.io.FileOutputStream.write(FileOutputStream.java:300) 09-16 19:52:26.654: E/AndroidRuntime(294):at java.io.FileOutputStream.write(FileOutputStream.java: 256) 09-16 19:52:26.654: E/AndroidRuntime(294):at java.io.DataOutputStream.writeBytes(DataOutputStream.java:167)2139) 09-16 19:52:26.654: E/AndroidRuntime(294): ... 11 更多 09-16 19:52:26.654: E/AndroidRuntime(294): 由: java.io.IOException: Broken pipe 09-16 19:52:26.654: E/AndroidRuntime(294): at org.apache.harmony.luni.platform.OSFileSystem.write(Native Method) 09-16 19:52:26.654: E/AndroidRuntime(294):在 dalvik.system.BlockGuard$WrappedFileSystem.write(BlockGuard.java:171) 09-16 19:52:26.654: E/AndroidRuntime(294):at java.io.FileOutputStream.write(FileOutputStream.java:300) 09- 16 19:52:26.654: E/AndroidRuntime(294):at java.io.FileOutputStream.write(FileOutputStream.java:256) 09-16 19:52:26.654:E/AndroidRuntime(294):at java.io。 DataOutputStream.writeBytes(DataOutputStream.java:167)2139) 09-16 19:52:26.654: E/AndroidRuntime(294): ... 11 更多 09-16 19:52:26.654: E/AndroidRuntime(294): 由: java.io.IOException: Broken pipe 09-16 19:52:26.654: E/AndroidRuntime(294): at org.apache.harmony.luni.platform.OSFileSystem.write(Native Method) 09-16 19:52:26.654: E/AndroidRuntime(294):在 dalvik.system.BlockGuard$WrappedFileSystem.write(BlockGuard.java:171) 09-16 19:52:26.654: E/AndroidRuntime(294):at java.io.FileOutputStream.write(FileOutputStream.java:300) 09- 16 19:52:26.654: E/AndroidRuntime(294):at java.io.FileOutputStream.write(FileOutputStream.java:256) 09-16 19:52:26.654:E/AndroidRuntime(294):at java.io。 DataOutputStream.writeBytes(DataOutputStream.java:167)断管 09-16 19:52:26.654: E/AndroidRuntime(294): at org.apache.harmony.luni.platform.OSFileSystem.write(Native Method) 09-16 19:52:26.654: E/AndroidRuntime(294 ): 在 dalvik.system.BlockGuard$WrappedFileSystem.write(BlockGuard.java:171) 09-16 19:52:26.654: E/AndroidRuntime(294):at java.io.FileOutputStream.write(FileOutputStream.java:300) 09-16 19:52:26.654: E/AndroidRuntime(294):at java.io.FileOutputStream.write(FileOutputStream.java:256) 09-16 19:52:26.654: E/AndroidRuntime(294):at java. io.DataOutputStream.writeBytes(DataOutputStream.java:167)断管 09-16 19:52:26.654: E/AndroidRuntime(294): at org.apache.harmony.luni.platform.OSFileSystem.write(Native Method) 09-16 19:52:26.654: E/AndroidRuntime(294 ): 在 dalvik.system.BlockGuard$WrappedFileSystem.write(BlockGuard.java:171) 09-16 19:52:26.654: E/AndroidRuntime(294):at java.io.FileOutputStream.write(FileOutputStream.java:300) 09-16 19:52:26.654: E/AndroidRuntime(294):at java.io.FileOutputStream.write(FileOutputStream.java:256) 09-16 19:52:26.654: E/AndroidRuntime(294):at java. io.DataOutputStream.writeBytes(DataOutputStream.java:167)E/AndroidRuntime(294):at java.io.FileOutputStream.write(FileOutputStream.java:300) 09-16 19:52:26.654: E/AndroidRuntime(294):at java.io.FileOutputStream.write(FileOutputStream.java :256) 09-16 19:52:26.654: E/AndroidRuntime(294):at java.io.DataOutputStream.writeBytes(DataOutputStream.java:167)E/AndroidRuntime(294):at java.io.FileOutputStream.write(FileOutputStream.java:300) 09-16 19:52:26.654: E/AndroidRuntime(294):at java.io.FileOutputStream.write(FileOutputStream.java :256) 09-16 19:52:26.654: E/AndroidRuntime(294):at java.io.DataOutputStream.writeBytes(DataOutputStream.java:167)

4

5 回答 5

0

请使用 AsyncTask 或 Thread。如果您编写了自己的方法,则可以这样使用:

new Thread(
    new Runnable() {
        @Override
        public void run() {
            copyStream();
        }
    }
);

或使用AsyncTask

于 2013-07-28T03:51:02.970 回答
0

异常的基础似乎来自“FileOutputStream.write”,您是否将写入权限添加到您的清单?

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
于 2012-09-16T15:02:24.963 回答
0

在你的 mainfest 中添加这个权限。我希望它对你有用,你应该初始化这个对象。在你的代码中,你给上下文值 null 这就是它不起作用的原因。

/** 需要一些 Intilization 而不是 null

ContextWrapper myContext = null;

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
于 2012-09-16T15:06:12.483 回答
0

默认情况下,您没有对/system/etc, 的写入权限(除非您在设备上进行了一些破解)。将其更改为Environment.getExternalStorageDirectory().getPath() + "/folderName/excluded-input-devices.xml"

于 2013-07-28T03:59:45.030 回答
0

您正在线程内调用 onClick 方法。这是不可能的,因为视图位于主线程中,无法从任何其他线程访问它们。

于 2019-12-25T17:22:32.507 回答