已编辑
所以我试图编写一个写入.Json的代码,但我的应用程序不断崩溃。
我遵循serval教程中的操作方法,但没有帮助。
我的代码如下:
AndroidManifest:
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name = "android.permission.WRITE_INTERNAL_STORAGE"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity"
android:screenOrientation="portrait" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
MainActivity:
私有静态最终字符串FILE_NAME =“ MyDataSheet.json”;
...
公共字符串chkFile(上下文上下文){ 字符串json = null;
try {
InputStream is = context.getAssets().open(FILE_NAME);
int size = is.available();
byte[] buffer = new byte[size];
is.read(buffer);
is.close();
json = new String(buffer, "UTF-8");
} catch (IOException ex) {
ex.printStackTrace();
return null;
}
return json;
}
...
protected void sdBTN(View v, Context context)
{
String txt1 = input1.getText().toString();
String txt2 = input2.toString();
String txt3 = unput3.toString();
JSONObject object = null;
try {
object = new JSONObject(chkFile(this));
} catch (JSONException e) {
e.printStackTrace();
}
try {
object.put("name", text1);
object.put("googleSheet", myGoogleSheet);
object.put("googleScript", myGoogleScript);
} catch (JSONException e) {
e.printStackTrace();
}
System.out.println(object);
}
我在Assets文件夹中创建了该文件,但该应用仍显示出与我之前关闭.txt相同的关闭结果。
我遵循教程,但没有帮助。
答案 0 :(得分:1)
您应该检查控制台日志输出,以查看要包含在问题中的实际错误消息。利用Android Logging类。像这样添加日志记录:
import android.util.Log;
...
private static final String TAG = "MyAppName";
Log.i(TAG, "Some info message such as mkdir: "+file);
if (BuildConfig.DEBUG) {
Log.d(TAG, "Some debug message here");
}
摆脱e.printStackTrace()
并使用:
Log.e(TAG, "Failed to save:"+file, e);
从Android Studio启动后,您的应用程序正在运行,并且连接到USB上的设备时,请转到Android Studio的Logcat标签。 Logcat标签允许过滤名称-只需键入“ MyAppName”,然后再次运行测试即可。
您有'file.mkdir();'在chkFile()中引用了FILE_NAME,该文件也传递给openFileOutput(FILE_NAME ...),因此在打开该路径以写入文件之前,您可能已将文件路径创建为目录。