mirror of
https://github.com/nextcloud/android.git
synced 2024-11-23 21:55:48 +03:00
Enable log into text file automatically when BuildConfig.DEBUG is true. Open log activity when user clicks on action bar menu option. Add button to send email with log file attached.
This commit is contained in:
parent
e073ef1489
commit
2ada53c99b
8 changed files with 184 additions and 76 deletions
|
@ -1,35 +1,43 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:paddingLeft="8dp"
|
||||
android:paddingRight="8dp">
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
android:padding="10dp"
|
||||
android:paddingLeft="8dp"
|
||||
android:paddingRight="8dp"
|
||||
android:weightSum="1" >
|
||||
|
||||
<ScrollView
|
||||
android:id="@+id/scrollView1"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginBottom="15dp"
|
||||
android:layout_weight="1" >
|
||||
|
||||
<ListView android:id="@android:id/list"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
/>
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical" >
|
||||
|
||||
<TextView android:id="@android:id/empty"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="#FF0000"
|
||||
android:text="No data"/>
|
||||
<LinearLayout
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="bottom">
|
||||
<TextView
|
||||
android:id="@+id/logTV"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:text="@string/empty" />
|
||||
</LinearLayout>
|
||||
</ScrollView>
|
||||
|
||||
<Button
|
||||
android:id="@+id/deleteLogHistoryButton"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/prefs_log_delete_history_button"/>
|
||||
<Button
|
||||
android:id="@+id/deleteLogHistoryButton"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="50dp"
|
||||
android:text="@string/prefs_log_delete_history_button" />
|
||||
|
||||
</LinearLayout>
|
||||
<Button
|
||||
android:id="@+id/sendLogHistoryButton"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="50dp"
|
||||
android:text="@string/prefs_log_send_history_button" />
|
||||
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
|
@ -43,6 +43,12 @@
|
|||
android:orderInCategory="2"
|
||||
android:showAsAction="never"
|
||||
android:title="@string/actionbar_settings"/>
|
||||
<item
|
||||
android:id="@+id/action_logger"
|
||||
android:icon="@drawable/ic_action_settings"
|
||||
android:orderInCategory="2"
|
||||
android:showAsAction="never"
|
||||
android:title="@string/actionbar_logger"/>
|
||||
|
||||
<!-- <item android:id="@+id/search" android:title="@string/actionbar_search" android:icon="@drawable/ic_action_search"></item> -->
|
||||
|
||||
|
|
|
@ -49,6 +49,8 @@
|
|||
<string name="mail_feedback">"mailto:apps@owncloud.com"</string>
|
||||
<string name="url_app_download">"https://play.google.com/store/apps/details?id=com.owncloud.android"</string>
|
||||
|
||||
<string name="mail_logger">jabarros@solidgear.es</string>
|
||||
|
||||
</resources>
|
||||
|
||||
|
||||
|
|
|
@ -286,4 +286,8 @@
|
|||
<string name="prefs_add_account">Add account</string>
|
||||
<string name="auth_redirect_non_secure_connection_title">Secure connection is redirected through an unsecured route.</string>
|
||||
|
||||
<string name="actionbar_logger">Logs</string>
|
||||
<string name="prefs_log_send_history_button">Send History</string>
|
||||
<string name="log_mail_subject">Owncloud Android app logs</string>
|
||||
|
||||
</resources>
|
||||
|
|
|
@ -16,11 +16,15 @@
|
|||
*/
|
||||
package com.owncloud.android;
|
||||
|
||||
import com.owncloud.android.lib.common.OwnCloudClientManagerFactory;
|
||||
import com.owncloud.android.lib.common.OwnCloudClientManagerFactory.Policy;
|
||||
import java.io.File;
|
||||
|
||||
import android.app.Application;
|
||||
import android.content.Context;
|
||||
import android.os.Environment;
|
||||
|
||||
import com.owncloud.android.lib.common.OwnCloudClientManagerFactory;
|
||||
import com.owncloud.android.lib.common.OwnCloudClientManagerFactory.Policy;
|
||||
import com.owncloud.android.utils.Log_OC;
|
||||
/**
|
||||
* Main Application of the project
|
||||
*
|
||||
|
@ -54,6 +58,12 @@ public class MainApp extends Application {
|
|||
OwnCloudClientManagerFactory.setDefaultPolicy(Policy.ALWAYS_NEW_CLIENT);
|
||||
}
|
||||
|
||||
if (BuildConfig.DEBUG) {
|
||||
String logpath = Environment.getExternalStorageDirectory()+File.separator+"owncloud"+File.separator+"log";
|
||||
Log_OC.d("Debug", "start logging");
|
||||
Log_OC.v("PATH", logpath);
|
||||
Log_OC.startLogging(logpath);
|
||||
}
|
||||
}
|
||||
|
||||
public static Context getAppContext() {
|
||||
|
|
|
@ -61,6 +61,7 @@ import com.actionbarsherlock.view.Menu;
|
|||
import com.actionbarsherlock.view.MenuInflater;
|
||||
import com.actionbarsherlock.view.MenuItem;
|
||||
import com.actionbarsherlock.view.Window;
|
||||
import com.owncloud.android.BuildConfig;
|
||||
import com.owncloud.android.MainApp;
|
||||
import com.owncloud.android.R;
|
||||
import com.owncloud.android.datamodel.OCFile;
|
||||
|
@ -445,6 +446,16 @@ FileFragment.ContainerActivity, OnNavigationListener, OnSslUntrustedCertListener
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onPrepareOptionsMenu(Menu menu) {
|
||||
if (BuildConfig.DEBUG) {
|
||||
menu.findItem(R.id.action_logger).setVisible(true);
|
||||
} else {
|
||||
menu.findItem(R.id.action_logger).setVisible(false);
|
||||
}
|
||||
return super.onPrepareOptionsMenu(menu);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu menu) {
|
||||
MenuInflater inflater = getSherlock().getMenuInflater();
|
||||
|
@ -475,6 +486,11 @@ FileFragment.ContainerActivity, OnNavigationListener, OnSslUntrustedCertListener
|
|||
startActivity(settingsIntent);
|
||||
break;
|
||||
}
|
||||
case R.id.action_logger: {
|
||||
Intent loggerIntent = new Intent(getApplicationContext(),LogHistoryActivity.class);
|
||||
startActivity(loggerIntent);
|
||||
break;
|
||||
}
|
||||
case android.R.id.home: {
|
||||
FileFragment second = getSecondFragment();
|
||||
OCFile currentDir = getCurrentDir();
|
||||
|
|
|
@ -17,50 +17,54 @@
|
|||
|
||||
package com.owncloud.android.ui.activity;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.io.FileReader;
|
||||
import java.io.IOException;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.preference.Preference;
|
||||
import android.preference.Preference.OnPreferenceChangeListener;
|
||||
|
||||
import android.view.View;
|
||||
import android.view.View.OnClickListener;
|
||||
import android.widget.Button;
|
||||
import android.widget.ListView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.actionbarsherlock.app.ActionBar;
|
||||
import com.actionbarsherlock.app.SherlockPreferenceActivity;
|
||||
import com.actionbarsherlock.app.SherlockActivity;
|
||||
import com.actionbarsherlock.view.MenuItem;
|
||||
import com.owncloud.android.R;
|
||||
import com.owncloud.android.ui.adapter.LogListAdapter;
|
||||
import com.owncloud.android.utils.DisplayUtils;
|
||||
import com.owncloud.android.utils.FileStorageUtils;
|
||||
|
||||
|
||||
public class LogHistoryActivity extends SherlockActivity {
|
||||
String mLogPath = FileStorageUtils.getLogPath();
|
||||
|
||||
private static final String MAIL_ATTACHMENT_TYPE = "plain/text";
|
||||
private static final String LOGGER_FILE_NAME = "log.txt";
|
||||
|
||||
public class LogHistoryActivity extends SherlockPreferenceActivity implements OnPreferenceChangeListener {
|
||||
String logpath = FileStorageUtils.getLogPath();
|
||||
File logDIR = null;
|
||||
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
setContentView(R.layout.log_send_file);
|
||||
setTitle("Log History");
|
||||
setTitle(getText(R.string.actionbar_logger));
|
||||
ActionBar actionBar = getSherlock().getActionBar();
|
||||
actionBar.setIcon(DisplayUtils.getSeasonalIconId());
|
||||
actionBar.setDisplayHomeAsUpEnabled(true);
|
||||
ListView listView = (ListView) findViewById(android.R.id.list);
|
||||
Button deleteHistoryButton = (Button) findViewById(R.id.deleteLogHistoryButton);
|
||||
Button sendHistoryButton = (Button) findViewById(R.id.sendLogHistoryButton);
|
||||
|
||||
deleteHistoryButton.setOnClickListener(new OnClickListener() {
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
File dir = new File(logpath);
|
||||
File dir = new File(mLogPath);
|
||||
if (dir != null) {
|
||||
File[] files = dir.listFiles();
|
||||
if(files!=null) {
|
||||
|
@ -70,30 +74,41 @@ public class LogHistoryActivity extends SherlockPreferenceActivity implements On
|
|||
}
|
||||
dir.delete();
|
||||
}
|
||||
Intent intent = new Intent(getBaseContext(), Preferences.class);
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||||
startActivity(intent);
|
||||
finish();
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
|
||||
if(logpath != null){
|
||||
logDIR = new File(logpath);
|
||||
sendHistoryButton.setOnClickListener(new OnClickListener() {
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
sendMail();
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
|
||||
if(mLogPath != null){
|
||||
logDIR = new File(mLogPath);
|
||||
}
|
||||
|
||||
if(logDIR != null && logDIR.isDirectory()) {
|
||||
File[] files = logDIR.listFiles();
|
||||
// File[] files = logDIR.listFiles();
|
||||
//
|
||||
// if (files != null && files.length != 0) {
|
||||
// ArrayList<String> logfiles_name = new ArrayList<String>();
|
||||
// for (File file : files) {
|
||||
// logfiles_name.add(file.getName());
|
||||
// }
|
||||
// String[] logFiles2Array = logfiles_name.toArray(new String[logfiles_name.size()]);
|
||||
// LogListAdapter listadapter = new LogListAdapter(this,logFiles2Array);
|
||||
// listView.setAdapter(listadapter);
|
||||
// }
|
||||
|
||||
readLogFile();
|
||||
|
||||
if (files != null && files.length != 0) {
|
||||
ArrayList<String> logfiles_name = new ArrayList<String>();
|
||||
for (File file : files) {
|
||||
logfiles_name.add(file.getName());
|
||||
}
|
||||
String[] logFiles2Array = logfiles_name.toArray(new String[logfiles_name.size()]);
|
||||
LogListAdapter listadapter = new LogListAdapter(this,logFiles2Array);
|
||||
listView.setAdapter(listadapter);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -101,22 +116,69 @@ public class LogHistoryActivity extends SherlockPreferenceActivity implements On
|
|||
@Override
|
||||
public boolean onMenuItemSelected(int featureId, MenuItem item) {
|
||||
super.onMenuItemSelected(featureId, item);
|
||||
Intent intent;
|
||||
|
||||
switch (item.getItemId()) {
|
||||
|
||||
case android.R.id.home:
|
||||
intent = new Intent(getBaseContext(), Preferences.class);
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||||
startActivity(intent);
|
||||
finish();
|
||||
break;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@Override
|
||||
public boolean onPreferenceChange(Preference arg0, Object arg1) {
|
||||
return false;
|
||||
|
||||
|
||||
/**
|
||||
* Start activity for sending email with logs attached
|
||||
*/
|
||||
private void sendMail() {
|
||||
|
||||
String emailAddresses[] = { getText(R.string.mail_logger).toString() };
|
||||
|
||||
Uri uri = Uri.parse("file://" + mLogPath + File.separator + LOGGER_FILE_NAME);
|
||||
Intent intent = new Intent(Intent.ACTION_SEND);
|
||||
|
||||
// Explicitly only use Gmail to send
|
||||
intent.setClassName("com.google.android.gm","com.google.android.gm.ComposeActivityGmail");
|
||||
|
||||
intent.putExtra(Intent.EXTRA_EMAIL, emailAddresses);
|
||||
intent.putExtra(Intent.EXTRA_SUBJECT, getText(R.string.log_mail_subject));
|
||||
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
intent.setType(MAIL_ATTACHMENT_TYPE);
|
||||
|
||||
intent.putExtra(Intent.EXTRA_STREAM, uri);
|
||||
if (intent.resolveActivity(getPackageManager()) != null) {
|
||||
startActivity(intent);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Read and show log file info
|
||||
*/
|
||||
private void readLogFile() {
|
||||
|
||||
//Get the text file
|
||||
File file = new File(mLogPath,LOGGER_FILE_NAME);
|
||||
|
||||
//Read text from file
|
||||
StringBuilder text = new StringBuilder();
|
||||
|
||||
try {
|
||||
BufferedReader br = new BufferedReader(new FileReader(file));
|
||||
String line;
|
||||
|
||||
while ((line = br.readLine()) != null) {
|
||||
text.append(line);
|
||||
text.append('\n');
|
||||
}
|
||||
}
|
||||
catch (IOException e) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
TextView logTV = (TextView) findViewById(R.id.logTV);
|
||||
logTV.setText(text);
|
||||
}
|
||||
}
|
|
@ -69,9 +69,9 @@ public class Log_OC {
|
|||
if (!folder.exists()) {
|
||||
folder.mkdirs();
|
||||
}
|
||||
if (logFile.exists()) {
|
||||
logFile.delete();
|
||||
}
|
||||
// if (logFile.exists()) {
|
||||
// logFile.delete();
|
||||
// }
|
||||
try {
|
||||
logFile.createNewFile();
|
||||
buf = new BufferedWriter(new FileWriter(logFile, true));
|
||||
|
|
Loading…
Reference in a new issue