2
我想通過Textview顯示日誌文件,Textview日誌文件內容由jni調用。
但Textview什麼也沒有顯示(黑屏空白),當給出「你好/ n有多低」時,Textview顯示正確。
return(* env) - > NewStringUTF(env,「hello/n How low」);被顯示。
return(* env) - > NewStringUTF(env,str);沒有顯示。Textview什麼都不顯示jni
--application.java--
package com.showlog;
import android.app.Activity;
import android.widget.TextView;
import android.os.Bundle;
public class showlog extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv = new TextView(this);
tv.setText(stringFromJNI());
setContentView(tv);
}
public native String stringFromJNI();
public native String unimplementedStringFromJNI();
static {
System.loadLibrary("showlog");
}
}
--showlog.c--
#include <string.h>
#include <stdio.h>
#include <jni.h>
#define MAX 119 // MAX of one line length of log file
#define Log_file "./Log_file.log" // log file path
jstring
Java_com_showlog_stringFromJNI(JNIEnv* env, jobject thiz)
{
char line[120]; // one line length of Log_file
char str[2000]; // Log_file length
FILE *fin;
fin=fopen(Log_file, "r");
while(! feof(fin)){
fgets(line, MAX, fin);
strcat(str, line);
}
fclose(fin);
return (*env)->NewStringUTF(env, str);
}
然後我嘗試只是C代碼(不是JNI LIB),它的工作原理。
--just顯示日誌file--
#include <string.h>
#include <stdio.h>
#define MAX 119 // MAX of one line length of log file
#define Log_file "./Log_file.log" // log file path
main()
{
char line[120]; // one line length of Log_file
char str[2000]; // Log_file length
FILE *fin;
fin=fopen(Log_file, "r");
while(! feof(fin)){
fgets(line, MAX, fin);
strcat(str, line);
}
fclose(fin);
printf("%s", str);
return 0;
}
如何TextView的表現呢?
在此先感謝。
謝謝,也許會返回null。但我不知道如何和難以調試它... – tknv 2011-01-07 06:06:46