mirror of
https://github.com/TeamNewPipe/NewPipe
synced 2024-11-14 13:54:56 +00:00
Merge pull request #357 from theScrabi/ref_crashreport
Refactore crashreport
This commit is contained in:
commit
39ff1cd898
@ -32,10 +32,10 @@ android {
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
testCompile 'junit:junit:4.12'
|
testCompile 'junit:junit:4.12'
|
||||||
compile 'com.android.support:appcompat-v7:24.2.0'
|
compile 'com.android.support:appcompat-v7:24.2.1'
|
||||||
compile 'com.android.support:support-v4:24.2.0'
|
compile 'com.android.support:support-v4:24.2.1'
|
||||||
compile 'com.android.support:design:24.2.0'
|
compile 'com.android.support:design:24.2.1'
|
||||||
compile 'com.android.support:recyclerview-v7:24.2.0'
|
compile 'com.android.support:recyclerview-v7:24.2.1'
|
||||||
compile 'org.jsoup:jsoup:1.8.3'
|
compile 'org.jsoup:jsoup:1.8.3'
|
||||||
compile 'org.mozilla:rhino:1.7.7'
|
compile 'org.mozilla:rhino:1.7.7'
|
||||||
compile 'info.guardianproject.netcipher:netcipher:1.2'
|
compile 'info.guardianproject.netcipher:netcipher:1.2'
|
||||||
@ -46,4 +46,5 @@ dependencies {
|
|||||||
compile 'com.google.code.gson:gson:2.4'
|
compile 'com.google.code.gson:gson:2.4'
|
||||||
compile 'com.nononsenseapps:filepicker:3.0.0'
|
compile 'com.nononsenseapps:filepicker:3.0.0'
|
||||||
testCompile 'junit:junit:4.12'
|
testCompile 'junit:junit:4.12'
|
||||||
|
compile 'ch.acra:acra:4.9.0'
|
||||||
}
|
}
|
||||||
|
@ -129,7 +129,7 @@
|
|||||||
android:name=".ExitActivity"
|
android:name=".ExitActivity"
|
||||||
android:label="@string/general_error"
|
android:label="@string/general_error"
|
||||||
android:theme="@android:style/Theme.NoDisplay" />
|
android:theme="@android:style/Theme.NoDisplay" />
|
||||||
<activity android:name=".ErrorActivity" />
|
<activity android:name=".report.ErrorActivity" />
|
||||||
|
|
||||||
<!-- giga get related -->
|
<!-- giga get related -->
|
||||||
<activity
|
<activity
|
||||||
|
@ -42,8 +42,5 @@ public class ActivityCommunicator {
|
|||||||
// Thumbnail send from VideoItemDetailFragment to BackgroundPlayer
|
// Thumbnail send from VideoItemDetailFragment to BackgroundPlayer
|
||||||
public volatile Bitmap backgroundPlayerThumbnail;
|
public volatile Bitmap backgroundPlayerThumbnail;
|
||||||
|
|
||||||
// Sent from any activity to ErrorActivity.
|
|
||||||
public volatile List<Throwable> errorList;
|
|
||||||
public volatile Class returnActivity;
|
public volatile Class returnActivity;
|
||||||
public volatile ErrorActivity.ErrorInfo errorInfo;
|
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,13 @@ import android.content.Context;
|
|||||||
import com.nostra13.universalimageloader.core.ImageLoader;
|
import com.nostra13.universalimageloader.core.ImageLoader;
|
||||||
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
|
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
|
||||||
|
|
||||||
|
import org.acra.ACRA;
|
||||||
|
import org.acra.config.ACRAConfiguration;
|
||||||
|
import org.acra.config.ACRAConfigurationException;
|
||||||
|
import org.acra.config.ConfigurationBuilder;
|
||||||
|
import org.acra.sender.ReportSenderFactory;
|
||||||
|
import org.schabi.newpipe.report.AcraReportSenderFactory;
|
||||||
|
import org.schabi.newpipe.report.ErrorActivity;
|
||||||
import org.schabi.newpipe.settings.SettingsActivity;
|
import org.schabi.newpipe.settings.SettingsActivity;
|
||||||
|
|
||||||
import info.guardianproject.netcipher.NetCipher;
|
import info.guardianproject.netcipher.NetCipher;
|
||||||
@ -30,12 +37,28 @@ import info.guardianproject.netcipher.proxy.OrbotHelper;
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
public class App extends Application {
|
public class App extends Application {
|
||||||
|
private static final String TAG = App.class.toString();
|
||||||
|
|
||||||
private static boolean useTor;
|
private static boolean useTor;
|
||||||
|
|
||||||
|
final Class<? extends ReportSenderFactory>[] reportSenderFactoryClasses
|
||||||
|
= new Class[]{AcraReportSenderFactory.class};
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate() {
|
public void onCreate() {
|
||||||
super.onCreate();
|
super.onCreate();
|
||||||
|
// init crashreport
|
||||||
|
try {
|
||||||
|
final ACRAConfiguration acraConfig = new ConfigurationBuilder(this)
|
||||||
|
.setReportSenderFactoryClasses(reportSenderFactoryClasses)
|
||||||
|
.build();
|
||||||
|
ACRA.init(this, acraConfig);
|
||||||
|
} catch(ACRAConfigurationException ace) {
|
||||||
|
ace.printStackTrace();
|
||||||
|
ErrorActivity.reportError(this, ace, null, null,
|
||||||
|
ErrorActivity.ErrorInfo.make(ErrorActivity.SEARCHED,"none",
|
||||||
|
"Could not initialize ACRA crash report", R.string.app_ui_crash));
|
||||||
|
}
|
||||||
|
|
||||||
// Initialize image loader
|
// Initialize image loader
|
||||||
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this).build();
|
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this).build();
|
||||||
|
@ -27,6 +27,7 @@ import org.schabi.newpipe.extractor.ParsingException;
|
|||||||
import org.schabi.newpipe.extractor.ServiceList;
|
import org.schabi.newpipe.extractor.ServiceList;
|
||||||
import org.schabi.newpipe.extractor.StreamingService;
|
import org.schabi.newpipe.extractor.StreamingService;
|
||||||
import org.schabi.newpipe.info_list.InfoListAdapter;
|
import org.schabi.newpipe.info_list.InfoListAdapter;
|
||||||
|
import org.schabi.newpipe.report.ErrorActivity;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
|
@ -7,8 +7,7 @@ import android.view.View;
|
|||||||
import com.nostra13.universalimageloader.core.assist.FailReason;
|
import com.nostra13.universalimageloader.core.assist.FailReason;
|
||||||
import com.nostra13.universalimageloader.core.listener.ImageLoadingListener;
|
import com.nostra13.universalimageloader.core.listener.ImageLoadingListener;
|
||||||
|
|
||||||
import org.schabi.newpipe.ErrorActivity;
|
import org.schabi.newpipe.report.ErrorActivity;
|
||||||
import org.schabi.newpipe.R;
|
|
||||||
import org.schabi.newpipe.extractor.ServiceList;
|
import org.schabi.newpipe.extractor.ServiceList;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -6,7 +6,7 @@ import android.util.Log;
|
|||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
|
||||||
import org.schabi.newpipe.Downloader;
|
import org.schabi.newpipe.Downloader;
|
||||||
import org.schabi.newpipe.ErrorActivity;
|
import org.schabi.newpipe.report.ErrorActivity;
|
||||||
import org.schabi.newpipe.R;
|
import org.schabi.newpipe.R;
|
||||||
import org.schabi.newpipe.extractor.ParsingException;
|
import org.schabi.newpipe.extractor.ParsingException;
|
||||||
import org.schabi.newpipe.extractor.ServiceList;
|
import org.schabi.newpipe.extractor.ServiceList;
|
||||||
|
@ -43,7 +43,7 @@ import java.util.Vector;
|
|||||||
|
|
||||||
import org.schabi.newpipe.ActivityCommunicator;
|
import org.schabi.newpipe.ActivityCommunicator;
|
||||||
import org.schabi.newpipe.ChannelActivity;
|
import org.schabi.newpipe.ChannelActivity;
|
||||||
import org.schabi.newpipe.ErrorActivity;
|
import org.schabi.newpipe.report.ErrorActivity;
|
||||||
import org.schabi.newpipe.ImageErrorLoadingListener;
|
import org.schabi.newpipe.ImageErrorLoadingListener;
|
||||||
import org.schabi.newpipe.Localization;
|
import org.schabi.newpipe.Localization;
|
||||||
import org.schabi.newpipe.R;
|
import org.schabi.newpipe.R;
|
||||||
|
@ -26,7 +26,7 @@ import android.widget.SeekBar;
|
|||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
import org.schabi.newpipe.ErrorActivity;
|
import org.schabi.newpipe.report.ErrorActivity;
|
||||||
import org.schabi.newpipe.R;
|
import org.schabi.newpipe.R;
|
||||||
import org.schabi.newpipe.settings.SettingsActivity;
|
import org.schabi.newpipe.settings.SettingsActivity;
|
||||||
|
|
||||||
|
@ -0,0 +1,38 @@
|
|||||||
|
package org.schabi.newpipe.report;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
|
||||||
|
import org.acra.collector.CrashReportData;
|
||||||
|
import org.acra.sender.ReportSender;
|
||||||
|
import org.acra.sender.ReportSenderException;
|
||||||
|
import org.schabi.newpipe.R;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by Christian Schabesberger on 13.09.16.
|
||||||
|
*
|
||||||
|
* Copyright (C) Christian Schabesberger 2015 <chris.schabesberger@mailbox.org>
|
||||||
|
* AcraReportSender.java is part of NewPipe.
|
||||||
|
*
|
||||||
|
* NewPipe is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* NewPipe is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with NewPipe. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class AcraReportSender implements ReportSender {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void send(Context context, CrashReportData report) throws ReportSenderException {
|
||||||
|
ErrorActivity.reportError(context, report,
|
||||||
|
ErrorActivity.ErrorInfo.make(ErrorActivity.UI_ERROR,"none",
|
||||||
|
"App crash, UI failure", R.string.app_ui_crash));
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,34 @@
|
|||||||
|
package org.schabi.newpipe.report;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
|
||||||
|
import org.acra.config.ACRAConfiguration;
|
||||||
|
import org.acra.sender.ReportSender;
|
||||||
|
import org.acra.sender.ReportSenderFactory;
|
||||||
|
import org.schabi.newpipe.report.AcraReportSender;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by Christian Schabesberger on 13.09.16.
|
||||||
|
*
|
||||||
|
* Copyright (C) Christian Schabesberger 2015 <chris.schabesberger@mailbox.org>
|
||||||
|
* AcraReportSenderFactory.java is part of NewPipe.
|
||||||
|
*
|
||||||
|
* NewPipe is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* NewPipe is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with NewPipe. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class AcraReportSenderFactory implements ReportSenderFactory {
|
||||||
|
public ReportSender create(Context context, ACRAConfiguration config) {
|
||||||
|
return new AcraReportSender();
|
||||||
|
}
|
||||||
|
}
|
@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
|
|
||||||
package org.schabi.newpipe;
|
package org.schabi.newpipe.report;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
@ -8,6 +8,8 @@ import android.content.Intent;
|
|||||||
import android.graphics.Color;
|
import android.graphics.Color;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
|
import android.os.Parcel;
|
||||||
|
import android.os.Parcelable;
|
||||||
import android.preference.PreferenceManager;
|
import android.preference.PreferenceManager;
|
||||||
import android.support.design.widget.Snackbar;
|
import android.support.design.widget.Snackbar;
|
||||||
import android.support.v4.app.NavUtils;
|
import android.support.v4.app.NavUtils;
|
||||||
@ -24,8 +26,15 @@ import android.widget.Button;
|
|||||||
import android.widget.EditText;
|
import android.widget.EditText;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import org.acra.ReportField;
|
||||||
|
import org.acra.collector.CrashReportData;
|
||||||
import org.json.JSONArray;
|
import org.json.JSONArray;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
|
import org.schabi.newpipe.ActivityCommunicator;
|
||||||
|
import org.schabi.newpipe.BuildConfig;
|
||||||
|
import org.schabi.newpipe.Downloader;
|
||||||
|
import org.schabi.newpipe.MainActivity;
|
||||||
|
import org.schabi.newpipe.R;
|
||||||
import org.schabi.newpipe.extractor.Parser;
|
import org.schabi.newpipe.extractor.Parser;
|
||||||
|
|
||||||
import java.io.PrintWriter;
|
import java.io.PrintWriter;
|
||||||
@ -57,7 +66,7 @@ import java.util.Vector;
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
public class ErrorActivity extends AppCompatActivity {
|
public class ErrorActivity extends AppCompatActivity {
|
||||||
public static class ErrorInfo {
|
public static class ErrorInfo implements Parcelable {
|
||||||
public int userAction;
|
public int userAction;
|
||||||
public String request;
|
public String request;
|
||||||
public String serviceName;
|
public String serviceName;
|
||||||
@ -71,27 +80,73 @@ public class ErrorActivity extends AppCompatActivity {
|
|||||||
info.message = message;
|
info.message = message;
|
||||||
return info;
|
return info;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int describeContents() {
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void writeToParcel(Parcel dest, int flags) {
|
||||||
|
dest.writeInt(this.userAction);
|
||||||
|
dest.writeString(this.request);
|
||||||
|
dest.writeString(this.serviceName);
|
||||||
|
dest.writeInt(this.message);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ErrorInfo() {
|
||||||
|
}
|
||||||
|
|
||||||
|
protected ErrorInfo(Parcel in) {
|
||||||
|
this.userAction = in.readInt();
|
||||||
|
this.request = in.readString();
|
||||||
|
this.serviceName = in.readString();
|
||||||
|
this.message = in.readInt();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final Parcelable.Creator<ErrorInfo> CREATOR = new Parcelable.Creator<ErrorInfo>() {
|
||||||
|
@Override
|
||||||
|
public ErrorInfo createFromParcel(Parcel source) {
|
||||||
|
return new ErrorInfo(source);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ErrorInfo[] newArray(int size) {
|
||||||
|
return new ErrorInfo[size];
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
// LOG TAGS
|
||||||
public static final String TAG = ErrorActivity.class.toString();
|
public static final String TAG = ErrorActivity.class.toString();
|
||||||
|
|
||||||
|
// BUNDLE TAGS
|
||||||
|
public static final String ERROR_INFO = "error_info";
|
||||||
|
public static final String ERROR_LIST = "error_list";
|
||||||
|
|
||||||
|
// MESSAGE ID
|
||||||
public static final int SEARCHED = 0;
|
public static final int SEARCHED = 0;
|
||||||
public static final int REQUESTED_STREAM = 1;
|
public static final int REQUESTED_STREAM = 1;
|
||||||
public static final int GET_SUGGESTIONS = 2;
|
public static final int GET_SUGGESTIONS = 2;
|
||||||
public static final int SOMETHING_ELSE = 3;
|
public static final int SOMETHING_ELSE = 3;
|
||||||
public static final int USER_REPORT = 4;
|
public static final int USER_REPORT = 4;
|
||||||
public static final int LOAD_IMAGE = 5;
|
public static final int LOAD_IMAGE = 5;
|
||||||
|
public static final int UI_ERROR = 6;
|
||||||
|
|
||||||
|
// MESSAGE STRING
|
||||||
public static final String SEARCHED_STRING = "searched";
|
public static final String SEARCHED_STRING = "searched";
|
||||||
public static final String REQUESTED_STREAM_STRING = "requested stream";
|
public static final String REQUESTED_STREAM_STRING = "requested stream";
|
||||||
public static final String GET_SUGGESTIONS_STRING = "get suggestions";
|
public static final String GET_SUGGESTIONS_STRING = "get suggestions";
|
||||||
public static final String SOMETHING_ELSE_STRING = "something";
|
public static final String SOMETHING_ELSE_STRING = "something";
|
||||||
public static final String USER_REPORT_STRING = "user report";
|
public static final String USER_REPORT_STRING = "user report";
|
||||||
public static final String LOAD_IMAGE_STRING = "load image";
|
public static final String LOAD_IMAGE_STRING = "load image";
|
||||||
|
public static final String UI_ERROR_STRING = "ui error";
|
||||||
|
|
||||||
|
|
||||||
public static final String ERROR_EMAIL_ADDRESS = "crashreport@newpipe.schabi.org";
|
public static final String ERROR_EMAIL_ADDRESS = "crashreport@newpipe.schabi.org";
|
||||||
public static final String ERROR_EMAIL_SUBJECT = "Exception in NewPipe " + BuildConfig.VERSION_NAME;
|
public static final String ERROR_EMAIL_SUBJECT = "Exception in NewPipe " + BuildConfig.VERSION_NAME;
|
||||||
|
|
||||||
private List<Throwable> errorList;
|
private String[] errorList;
|
||||||
private ErrorInfo errorInfo;
|
private ErrorInfo errorInfo;
|
||||||
private Class returnActivity;
|
private Class returnActivity;
|
||||||
private String currentTimeStamp;
|
private String currentTimeStamp;
|
||||||
@ -115,19 +170,19 @@ public class ErrorActivity extends AppCompatActivity {
|
|||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
ActivityCommunicator ac = ActivityCommunicator.getCommunicator();
|
ActivityCommunicator ac = ActivityCommunicator.getCommunicator();
|
||||||
ac.errorList = el;
|
|
||||||
ac.returnActivity = returnAcitivty;
|
ac.returnActivity = returnAcitivty;
|
||||||
ac.errorInfo = errorInfo;
|
|
||||||
Intent intent = new Intent(context, ErrorActivity.class);
|
Intent intent = new Intent(context, ErrorActivity.class);
|
||||||
|
intent.putExtra(ERROR_INFO, errorInfo);
|
||||||
|
intent.putExtra(ERROR_LIST, elToSl(el));
|
||||||
context.startActivity(intent);
|
context.startActivity(intent);
|
||||||
}
|
}
|
||||||
}).show();
|
}).show();
|
||||||
} else {
|
} else {
|
||||||
ActivityCommunicator ac = ActivityCommunicator.getCommunicator();
|
ActivityCommunicator ac = ActivityCommunicator.getCommunicator();
|
||||||
ac.errorList = el;
|
|
||||||
ac.returnActivity = returnAcitivty;
|
ac.returnActivity = returnAcitivty;
|
||||||
ac.errorInfo = errorInfo;
|
|
||||||
Intent intent = new Intent(context, ErrorActivity.class);
|
Intent intent = new Intent(context, ErrorActivity.class);
|
||||||
|
intent.putExtra(ERROR_INFO, errorInfo);
|
||||||
|
intent.putExtra(ERROR_LIST, elToSl(el));
|
||||||
context.startActivity(intent);
|
context.startActivity(intent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -165,10 +220,29 @@ public class ErrorActivity extends AppCompatActivity {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void reportError(final Context context, final CrashReportData report, final ErrorInfo errorInfo) {
|
||||||
|
// get key first (don't ask about this solution)
|
||||||
|
ReportField key = null;
|
||||||
|
for(ReportField k : report.keySet()) {
|
||||||
|
if(k.toString().equals("STACK_TRACE")) {
|
||||||
|
key = k;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
String[] el = new String[] { report.get(key) };
|
||||||
|
|
||||||
|
Intent intent = new Intent(context, ErrorActivity.class);
|
||||||
|
intent.putExtra(ERROR_INFO, errorInfo);
|
||||||
|
intent.putExtra(ERROR_LIST, el);
|
||||||
|
context.startActivity(intent);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
setContentView(R.layout.activity_error);
|
setContentView(R.layout.activity_error);
|
||||||
|
|
||||||
|
Intent intent = getIntent();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
ActionBar actionBar = getSupportActionBar();
|
ActionBar actionBar = getSupportActionBar();
|
||||||
actionBar.setDisplayHomeAsUpEnabled(true);
|
actionBar.setDisplayHomeAsUpEnabled(true);
|
||||||
@ -179,23 +253,20 @@ public class ErrorActivity extends AppCompatActivity {
|
|||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
ActivityCommunicator ac = ActivityCommunicator.getCommunicator();
|
|
||||||
errorList = ac.errorList;
|
|
||||||
returnActivity = ac.returnActivity;
|
|
||||||
errorInfo = ac.errorInfo;
|
|
||||||
|
|
||||||
reportButton = (Button) findViewById(R.id.errorReportButton);
|
reportButton = (Button) findViewById(R.id.errorReportButton);
|
||||||
userCommentBox = (EditText) findViewById(R.id.errorCommentBox);
|
userCommentBox = (EditText) findViewById(R.id.errorCommentBox);
|
||||||
errorView = (TextView) findViewById(R.id.errorView);
|
errorView = (TextView) findViewById(R.id.errorView);
|
||||||
infoView = (TextView) findViewById(R.id.errorInfosView);
|
infoView = (TextView) findViewById(R.id.errorInfosView);
|
||||||
errorMessageView = (TextView) findViewById(R.id.errorMessageView);
|
errorMessageView = (TextView) findViewById(R.id.errorMessageView);
|
||||||
|
|
||||||
errorView.setText(formErrorText(errorList));
|
ActivityCommunicator ac = ActivityCommunicator.getCommunicator();
|
||||||
|
returnActivity = ac.returnActivity;
|
||||||
|
errorInfo = intent.getParcelableExtra(ERROR_INFO);
|
||||||
|
errorList = intent.getStringArrayExtra(ERROR_LIST);
|
||||||
|
|
||||||
//importand add gurumeditaion
|
//importand add gurumeditaion
|
||||||
addGuruMeditaion();
|
addGuruMeditaion();
|
||||||
currentTimeStamp = getCurrentTimeStamp();
|
currentTimeStamp = getCurrentTimeStamp();
|
||||||
buildInfo(errorInfo);
|
|
||||||
|
|
||||||
reportButton.setOnClickListener(new View.OnClickListener() {
|
reportButton.setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
@ -214,12 +285,16 @@ public class ErrorActivity extends AppCompatActivity {
|
|||||||
globIpRangeThread = new Thread(new IpRagneRequester());
|
globIpRangeThread = new Thread(new IpRagneRequester());
|
||||||
globIpRangeThread.start();
|
globIpRangeThread.start();
|
||||||
|
|
||||||
|
// normal bugreport
|
||||||
|
buildInfo(errorInfo);
|
||||||
if(errorInfo.message != 0) {
|
if(errorInfo.message != 0) {
|
||||||
errorMessageView.setText(errorInfo.message);
|
errorMessageView.setText(errorInfo.message);
|
||||||
} else {
|
} else {
|
||||||
errorMessageView.setVisibility(View.GONE);
|
errorMessageView.setVisibility(View.GONE);
|
||||||
findViewById(R.id.messageWhatHappenedView).setVisibility(View.GONE);
|
findViewById(R.id.messageWhatHappenedView).setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
errorView.setText(formErrorText(errorList));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -255,12 +330,12 @@ public class ErrorActivity extends AppCompatActivity {
|
|||||||
return sw.getBuffer().toString();
|
return sw.getBuffer().toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
private String formErrorText(List<Throwable> el) {
|
private String formErrorText(String[] el) {
|
||||||
String text = "";
|
String text = "";
|
||||||
if(el != null) {
|
if(el != null) {
|
||||||
for (Throwable e : el) {
|
for (String e : el) {
|
||||||
text += "-------------------------------------\n"
|
text += "-------------------------------------\n"
|
||||||
+ getStackTrace(e);
|
+ e;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
text += "-------------------------------------";
|
text += "-------------------------------------";
|
||||||
@ -295,6 +370,7 @@ public class ErrorActivity extends AppCompatActivity {
|
|||||||
+ "\n" + getContentLangString()
|
+ "\n" + getContentLangString()
|
||||||
+ "\n" + info.serviceName
|
+ "\n" + info.serviceName
|
||||||
+ "\n" + currentTimeStamp
|
+ "\n" + currentTimeStamp
|
||||||
|
+ "\n" + getPackageName()
|
||||||
+ "\n" + BuildConfig.VERSION_NAME
|
+ "\n" + BuildConfig.VERSION_NAME
|
||||||
+ "\n" + getOsString();
|
+ "\n" + getOsString();
|
||||||
|
|
||||||
@ -309,6 +385,7 @@ public class ErrorActivity extends AppCompatActivity {
|
|||||||
.put("request", errorInfo.request)
|
.put("request", errorInfo.request)
|
||||||
.put("content_language", getContentLangString())
|
.put("content_language", getContentLangString())
|
||||||
.put("service", errorInfo.serviceName)
|
.put("service", errorInfo.serviceName)
|
||||||
|
.put("package", getPackageName())
|
||||||
.put("version", BuildConfig.VERSION_NAME)
|
.put("version", BuildConfig.VERSION_NAME)
|
||||||
.put("os", getOsString())
|
.put("os", getOsString())
|
||||||
.put("time", currentTimeStamp)
|
.put("time", currentTimeStamp)
|
||||||
@ -316,8 +393,8 @@ public class ErrorActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
JSONArray exceptionArray = new JSONArray();
|
JSONArray exceptionArray = new JSONArray();
|
||||||
if(errorList != null) {
|
if(errorList != null) {
|
||||||
for (Throwable e : errorList) {
|
for (String e : errorList) {
|
||||||
exceptionArray.put(getStackTrace(e));
|
exceptionArray.put(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -347,6 +424,8 @@ public class ErrorActivity extends AppCompatActivity {
|
|||||||
return USER_REPORT_STRING;
|
return USER_REPORT_STRING;
|
||||||
case LOAD_IMAGE:
|
case LOAD_IMAGE:
|
||||||
return LOAD_IMAGE_STRING;
|
return LOAD_IMAGE_STRING;
|
||||||
|
case UI_ERROR:
|
||||||
|
return UI_ERROR_STRING;
|
||||||
default:
|
default:
|
||||||
return "Your description is in another castle.";
|
return "Your description is in another castle.";
|
||||||
}
|
}
|
||||||
@ -421,4 +500,13 @@ public class ErrorActivity extends AppCompatActivity {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// errorList to StringList
|
||||||
|
private static String[] elToSl(List<Throwable> stackTraces) {
|
||||||
|
String[] out = new String[stackTraces.size()];
|
||||||
|
for(int i = 0; i < stackTraces.size(); i++) {
|
||||||
|
out[i] = getStackTrace(stackTraces.get(i));
|
||||||
|
}
|
||||||
|
return out;
|
||||||
|
}
|
||||||
}
|
}
|
@ -18,7 +18,7 @@ import android.view.inputmethod.InputMethodManager;
|
|||||||
import android.widget.ProgressBar;
|
import android.widget.ProgressBar;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
import org.schabi.newpipe.ErrorActivity;
|
import org.schabi.newpipe.report.ErrorActivity;
|
||||||
import org.schabi.newpipe.R;
|
import org.schabi.newpipe.R;
|
||||||
import org.schabi.newpipe.detail.VideoItemDetailActivity;
|
import org.schabi.newpipe.detail.VideoItemDetailActivity;
|
||||||
import org.schabi.newpipe.detail.VideoItemDetailFragment;
|
import org.schabi.newpipe.detail.VideoItemDetailFragment;
|
||||||
|
@ -6,10 +6,9 @@ import android.os.Handler;
|
|||||||
import android.preference.PreferenceManager;
|
import android.preference.PreferenceManager;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.Toast;
|
|
||||||
|
|
||||||
import org.schabi.newpipe.Downloader;
|
import org.schabi.newpipe.Downloader;
|
||||||
import org.schabi.newpipe.ErrorActivity;
|
import org.schabi.newpipe.report.ErrorActivity;
|
||||||
import org.schabi.newpipe.R;
|
import org.schabi.newpipe.R;
|
||||||
import org.schabi.newpipe.extractor.ExtractionException;
|
import org.schabi.newpipe.extractor.ExtractionException;
|
||||||
import org.schabi.newpipe.extractor.SearchEngine;
|
import org.schabi.newpipe.extractor.SearchEngine;
|
||||||
|
@ -1,14 +1,13 @@
|
|||||||
package org.schabi.newpipe.search_fragment;
|
package org.schabi.newpipe.search_fragment;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.Context;
|
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.preference.PreferenceManager;
|
import android.preference.PreferenceManager;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
import org.schabi.newpipe.Downloader;
|
import org.schabi.newpipe.Downloader;
|
||||||
import org.schabi.newpipe.ErrorActivity;
|
import org.schabi.newpipe.report.ErrorActivity;
|
||||||
import org.schabi.newpipe.R;
|
import org.schabi.newpipe.R;
|
||||||
import org.schabi.newpipe.extractor.ExtractionException;
|
import org.schabi.newpipe.extractor.ExtractionException;
|
||||||
import org.schabi.newpipe.extractor.SearchEngine;
|
import org.schabi.newpipe.extractor.SearchEngine;
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
tools:context=".ErrorActivity">
|
tools:context=".report.ErrorActivity">
|
||||||
|
|
||||||
<ScrollView
|
<ScrollView
|
||||||
android:id="@+id/scrollView"
|
android:id="@+id/scrollView"
|
||||||
|
@ -135,7 +135,6 @@
|
|||||||
|
|
||||||
<string name="autoplay_by_calling_app_summary">Auto-reproduz un videu al llamar a NewPipe dende otra aplicación.</string>
|
<string name="autoplay_by_calling_app_summary">Auto-reproduz un videu al llamar a NewPipe dende otra aplicación.</string>
|
||||||
<string name="autoplay_by_calling_app_title">Auto-reproducir al llamar dende otra aplicación</string>
|
<string name="autoplay_by_calling_app_title">Auto-reproducir al llamar dende otra aplicación</string>
|
||||||
<string name="info_labels">Qué:\\nSolicitú:\\nLlingua conteníu:\\nServiciu:\\nHora GMT:\\nVersión:\\nVersión SO:\\nRangu global d\'IP:</string>
|
|
||||||
<string name="detail_uploader_thumbnail_view_description">Miniatura del xubidor</string>
|
<string name="detail_uploader_thumbnail_view_description">Miniatura del xubidor</string>
|
||||||
<string name="detail_dislikes_img_view_description">Despréstames</string>
|
<string name="detail_dislikes_img_view_description">Despréstames</string>
|
||||||
<string name="error_querying_decoders">Nun puen consultase los descodificadores del preséu</string>
|
<string name="error_querying_decoders">Nun puen consultase los descodificadores del preséu</string>
|
||||||
|
@ -91,7 +91,7 @@
|
|||||||
<string name="error_snackbar_action">MELDEN</string>
|
<string name="error_snackbar_action">MELDEN</string>
|
||||||
<string name="what_device_headline">Info:</string>
|
<string name="what_device_headline">Info:</string>
|
||||||
<string name="what_happened_headline">Dies ist passiert:</string>
|
<string name="what_happened_headline">Dies ist passiert:</string>
|
||||||
<string name="info_labels">Was:\\nAnfrage:\\nSprache des Inhalts:\\nDienst:\\nZeit (GMT):\\nVersion:\\nOS-Version:\\nGlob. IP-Bereich:</string>
|
<string name="info_labels">Was:\\nAnfrage:\\nSprache des Inhalts:\\nDienst:\\nZeit (GMT):\\nPacket:\\nVersion:\\nOS-Version:\\nGlob. IP-Bereich:</string>
|
||||||
<string name="error_details_headline">Details:</string>
|
<string name="error_details_headline">Details:</string>
|
||||||
|
|
||||||
|
|
||||||
|
@ -99,7 +99,6 @@
|
|||||||
<string name="error_snackbar_action">REPORTAR</string>
|
<string name="error_snackbar_action">REPORTAR</string>
|
||||||
<string name="what_device_headline">Información:</string>
|
<string name="what_device_headline">Información:</string>
|
||||||
<string name="what_happened_headline">Qué ha ocurrido:</string>
|
<string name="what_happened_headline">Qué ha ocurrido:</string>
|
||||||
<string name="info_labels">Que:\\nSolicitud:\\nIdioma del contenido:\\nServicio:\\nHora GMT:\\nVersión:\\nVersión del SO:\\nRango global de IP:</string>
|
|
||||||
<string name="info_searched_lbl">Buscado:</string>
|
<string name="info_searched_lbl">Buscado:</string>
|
||||||
<string name="info_requested_stream_lbl">Stream solicitado:</string>
|
<string name="info_requested_stream_lbl">Stream solicitado:</string>
|
||||||
<string name="your_comment">Su comentario (en Inglés):</string>
|
<string name="your_comment">Su comentario (en Inglés):</string>
|
||||||
|
@ -81,7 +81,6 @@
|
|||||||
<string name="error_snackbar_action">گزارش</string>
|
<string name="error_snackbar_action">گزارش</string>
|
||||||
<string name="what_device_headline">اطّلاعات:</string>
|
<string name="what_device_headline">اطّلاعات:</string>
|
||||||
<string name="what_happened_headline">چه روی داد:</string>
|
<string name="what_happened_headline">چه روی داد:</string>
|
||||||
<string name="info_labels">چه:\\nدرخواست:\\nزبان درخواست:\\nخدمت:\\nزمان GMT:\\nنگارش:\\nنگارش س.ع:\\nبازه آیپی:</string>
|
|
||||||
<string name="info_searched_lbl">جستوجو شده برای:</string>
|
<string name="info_searched_lbl">جستوجو شده برای:</string>
|
||||||
<string name="info_requested_stream_lbl">جریان درخواستی:</string>
|
<string name="info_requested_stream_lbl">جریان درخواستی:</string>
|
||||||
<string name="your_comment">توضیح شما (به انگلیسی):</string>
|
<string name="your_comment">توضیح شما (به انگلیسی):</string>
|
||||||
|
@ -121,7 +121,6 @@
|
|||||||
<string name="logging_verbose">Verbeux</string>
|
<string name="logging_verbose">Verbeux</string>
|
||||||
<string name="off">[désactivé]</string>
|
<string name="off">[désactivé]</string>
|
||||||
<string name="error_querying_decoders">Impossible d\'accéder aux décodeurs de l\'appareil</string>
|
<string name="error_querying_decoders">Impossible d\'accéder aux décodeurs de l\'appareil</string>
|
||||||
<string name="info_labels">Action :\\nRequête :\\nLangue du contenu :\\nService :\\nHeure GMT :\\nVersion :\\nVersion d\'OS :\\nIntervalle global d\'IP :</string>
|
|
||||||
<string name="downloads">Téléchargements</string>
|
<string name="downloads">Téléchargements</string>
|
||||||
<string name="downloads_title">Téléchargements</string>
|
<string name="downloads_title">Téléchargements</string>
|
||||||
<string name="settings_title">Paramètres</string>
|
<string name="settings_title">Paramètres</string>
|
||||||
|
@ -117,7 +117,6 @@
|
|||||||
<string name="could_not_load_thumbnails">Nem sikerült az összes előnézeti kép betöltése</string>
|
<string name="could_not_load_thumbnails">Nem sikerült az összes előnézeti kép betöltése</string>
|
||||||
<string name="parsing_error">Nem sikerült a weblap betöltése.</string>
|
<string name="parsing_error">Nem sikerült a weblap betöltése.</string>
|
||||||
<string name="light_parsing_error">Nem sikerült a weblap teljes betöltése.</string>
|
<string name="light_parsing_error">Nem sikerült a weblap teljes betöltése.</string>
|
||||||
<string name="info_labels">Mi:\\nKérés:\\nTartalom nyelve:\\nSzolgáltatás:\\nGMT Idő:\\nVerzió:\\nOS verzió:\\nGlob. IP tartomány:</string>
|
|
||||||
<string name="error_drm_not_supported">Védett tartalom nincs támogatva 18-as API alatt (Android 4.3)</string>
|
<string name="error_drm_not_supported">Védett tartalom nincs támogatva 18-as API alatt (Android 4.3)</string>
|
||||||
<string name="error_drm_unsupported_scheme">Ez az eszköz nem támogatja a szükséges DRM sémát</string>
|
<string name="error_drm_unsupported_scheme">Ez az eszköz nem támogatja a szükséges DRM sémát</string>
|
||||||
<string name="logging">Naplózás</string>
|
<string name="logging">Naplózás</string>
|
||||||
|
@ -100,7 +100,6 @@
|
|||||||
<string name="error_snackbar_action">SEGNALA</string>
|
<string name="error_snackbar_action">SEGNALA</string>
|
||||||
<string name="what_device_headline">Info:</string>
|
<string name="what_device_headline">Info:</string>
|
||||||
<string name="what_happened_headline">Cosa è successo:</string>
|
<string name="what_happened_headline">Cosa è successo:</string>
|
||||||
<string name="info_labels">Cosa:\\nRichiesta:\\nLingua Contenuto:\\nServizio:\\nOrario GMT:\\nVersione:\\nVersione SO:\\nRange glob. dell\'IP:</string>
|
|
||||||
<string name="info_searched_lbl">È stato cercato:</string>
|
<string name="info_searched_lbl">È stato cercato:</string>
|
||||||
<string name="info_requested_stream_lbl">Stream richiesto:</string>
|
<string name="info_requested_stream_lbl">Stream richiesto:</string>
|
||||||
<string name="your_comment">Il tuo commento (in inglese):</string>
|
<string name="your_comment">Il tuo commento (in inglese):</string>
|
||||||
|
@ -93,7 +93,6 @@
|
|||||||
<string name="error_snackbar_action">報告</string>
|
<string name="error_snackbar_action">報告</string>
|
||||||
<string name="what_device_headline">情報:</string>
|
<string name="what_device_headline">情報:</string>
|
||||||
<string name="what_happened_headline">何が起こりましたか:</string>
|
<string name="what_happened_headline">何が起こりましたか:</string>
|
||||||
<string name="info_labels">何:\\nリクエスト:\\nコンテンツの言語:\\nサービス:\\nGMT 時間:\\nバージョン:\\nOS バージョン:\\nグローバル IP の範囲:</string>
|
|
||||||
<string name="info_searched_lbl">検索結果:</string>
|
<string name="info_searched_lbl">検索結果:</string>
|
||||||
<string name="info_requested_stream_lbl">要求したストリーム:</string>
|
<string name="info_requested_stream_lbl">要求したストリーム:</string>
|
||||||
<string name="your_comment">あなたのコメント (英語で):</string>
|
<string name="your_comment">あなたのコメント (英語で):</string>
|
||||||
|
@ -95,7 +95,6 @@
|
|||||||
<string name="error_snackbar_action">보고</string>
|
<string name="error_snackbar_action">보고</string>
|
||||||
<string name="what_device_headline">정보:</string>
|
<string name="what_device_headline">정보:</string>
|
||||||
<string name="what_happened_headline">다음이 발생함:</string>
|
<string name="what_happened_headline">다음이 발생함:</string>
|
||||||
<string name="info_labels">사유:\\n요청t:\\n컨텐츠 언어:\\n서비스:\\nGMT 시간:\\n버전:\\nOS 버전:\\nGlob. IP 범위:</string>
|
|
||||||
<string name="info_searched_lbl">다음을 검색:</string>
|
<string name="info_searched_lbl">다음을 검색:</string>
|
||||||
<string name="info_requested_stream_lbl">요청된 스트림:</string>
|
<string name="info_requested_stream_lbl">요청된 스트림:</string>
|
||||||
<string name="your_comment">내용 (영어로 작성):</string>
|
<string name="your_comment">내용 (영어로 작성):</string>
|
||||||
|
@ -117,6 +117,5 @@
|
|||||||
<string name="use_exoplayer_summary">Eksperimentelt</string>
|
<string name="use_exoplayer_summary">Eksperimentelt</string>
|
||||||
<string name="duration_live">direkteoverført</string>
|
<string name="duration_live">direkteoverført</string>
|
||||||
|
|
||||||
<string name="info_labels">Hva:\\nRequest:\\nContent Språk:\\nService:\\nGMT Tid:\\nVersion:\\nOS version:\\nGlob. IP-blokk:</string>
|
|
||||||
<string name="error_instantiating_decoder">Kunne ikke igangsette dekoder <xliff:g id="decoder_name">%1$s</xliff:g></string>
|
<string name="error_instantiating_decoder">Kunne ikke igangsette dekoder <xliff:g id="decoder_name">%1$s</xliff:g></string>
|
||||||
</resources>
|
</resources>
|
||||||
|
@ -89,7 +89,6 @@
|
|||||||
<string name="error_snackbar_action">Relatório</string>
|
<string name="error_snackbar_action">Relatório</string>
|
||||||
<string name="what_device_headline">Info:</string>
|
<string name="what_device_headline">Info:</string>
|
||||||
<string name="what_happened_headline">O que ocorreu:</string>
|
<string name="what_happened_headline">O que ocorreu:</string>
|
||||||
<string name="info_labels">O quê:\\nPedido:\\nIdioma do conteúdo:\\nServiço:\\nHora GMT:\\nVersão:\\nVersão do So:\\nGlob. IP:</string>
|
|
||||||
<string name="info_searched_lbl">Pesquisou por:</string>
|
<string name="info_searched_lbl">Pesquisou por:</string>
|
||||||
<string name="info_requested_stream_lbl">Emissão solicitada:</string>
|
<string name="info_requested_stream_lbl">Emissão solicitada:</string>
|
||||||
<string name="your_comment">Comentários (em Inglês):</string>
|
<string name="your_comment">Comentários (em Inglês):</string>
|
||||||
|
@ -96,7 +96,6 @@
|
|||||||
<string name="error_snackbar_action">RAPORTAȚI</string>
|
<string name="error_snackbar_action">RAPORTAȚI</string>
|
||||||
<string name="what_device_headline">Informații:</string>
|
<string name="what_device_headline">Informații:</string>
|
||||||
<string name="what_happened_headline">Ce s-a întâmplat:</string>
|
<string name="what_happened_headline">Ce s-a întâmplat:</string>
|
||||||
<string name="info_labels">Ce:\\nRequest:\\nContent Lang:\\nService:\\nGMT Time:\\nVersion:\\nOS version:\\nGlob. Raza IP-ului:</string>
|
|
||||||
<string name="info_searched_lbl">S-a căutat pentru:</string>
|
<string name="info_searched_lbl">S-a căutat pentru:</string>
|
||||||
<string name="info_requested_stream_lbl">Fluxul cerut:</string>
|
<string name="info_requested_stream_lbl">Fluxul cerut:</string>
|
||||||
<string name="your_comment">Comentariul tău (în engleză):</string>
|
<string name="your_comment">Comentariul tău (în engleză):</string>
|
||||||
|
@ -91,7 +91,6 @@
|
|||||||
<string name="error_snackbar_action">SPRÁVA</string>
|
<string name="error_snackbar_action">SPRÁVA</string>
|
||||||
<string name="what_device_headline">Info:</string>
|
<string name="what_device_headline">Info:</string>
|
||||||
<string name="what_happened_headline">Čo sa stalo:</string>
|
<string name="what_happened_headline">Čo sa stalo:</string>
|
||||||
<string name="info_labels">Čo:\\nPožiadavka:\\nJazyk obsahu:\\nSlužba:\\nČas v GMT:\\nVerzia:\\nVerzia OS:\\nGlob. rozsah IP:</string>
|
|
||||||
<string name="info_searched_lbl">Hľadané:</string>
|
<string name="info_searched_lbl">Hľadané:</string>
|
||||||
<string name="info_requested_stream_lbl">Požadované vysielanie:</string>
|
<string name="info_requested_stream_lbl">Požadované vysielanie:</string>
|
||||||
<string name="your_comment">Váš komentár (v Angličtine):</string>
|
<string name="your_comment">Váš komentár (v Angličtine):</string>
|
||||||
|
@ -107,7 +107,6 @@
|
|||||||
<string name="off">[izklopljeno]</string>
|
<string name="off">[izklopljeno]</string>
|
||||||
<string name="use_exoplayer_title">Uporabi ExoPlayer</string>
|
<string name="use_exoplayer_title">Uporabi ExoPlayer</string>
|
||||||
<string name="use_exoplayer_summary">Preizkusne zmožnosti</string>
|
<string name="use_exoplayer_summary">Preizkusne zmožnosti</string>
|
||||||
<string name="info_labels">Predmet:\\nZahteva:\\nJezik vsebine:\\nStoritev:\\nČas po GMT:\\nRazličica:\\nRazličica OS:\\nObseg IP:</string>
|
|
||||||
<string name="info_searched_lbl">Iskano:</string>
|
<string name="info_searched_lbl">Iskano:</string>
|
||||||
<string name="info_requested_stream_lbl">Zahtevan pretok:</string>
|
<string name="info_requested_stream_lbl">Zahtevan pretok:</string>
|
||||||
<string name="your_comment">Opomba (v angleščini):</string>
|
<string name="your_comment">Opomba (v angleščini):</string>
|
||||||
|
@ -95,7 +95,6 @@
|
|||||||
<string name="error_snackbar_action">ПРИЈАВИ</string>
|
<string name="error_snackbar_action">ПРИЈАВИ</string>
|
||||||
<string name="what_device_headline">Подаци:</string>
|
<string name="what_device_headline">Подаци:</string>
|
||||||
<string name="what_happened_headline">Шта се десило:</string>
|
<string name="what_happened_headline">Шта се десило:</string>
|
||||||
<string name="info_labels">Шта:\\nЗахтев:\\nЈезик садржаја:\\nУслуга:\\nГМТ време:\\nИздање:\\nИздање система:\\nГлоб. ИП опсег:</string>
|
|
||||||
<string name="your_comment">Ваш коментар (на енглеском):</string>
|
<string name="your_comment">Ваш коментар (на енглеском):</string>
|
||||||
<string name="error_details_headline">Детаљи:</string>
|
<string name="error_details_headline">Детаљи:</string>
|
||||||
|
|
||||||
|
@ -79,5 +79,4 @@
|
|||||||
<string name="error_snackbar_action">ЗВІТУВАТИ</string>
|
<string name="error_snackbar_action">ЗВІТУВАТИ</string>
|
||||||
<string name="what_device_headline">Інформація:</string>
|
<string name="what_device_headline">Інформація:</string>
|
||||||
<string name="what_happened_headline">Що сталося:</string>
|
<string name="what_happened_headline">Що сталося:</string>
|
||||||
<string name="info_labels">Що:\\nЗапит:\\nМова контенту:\\nСервіс:\\nЧас GMT:\\nВерсія:\\nВерсія ОС:\\nДіапазон IP:</string>
|
|
||||||
</resources>
|
</resources>
|
||||||
|
@ -89,7 +89,6 @@
|
|||||||
<string name="error_details_headline">详细信息:</string>
|
<string name="error_details_headline">详细信息:</string>
|
||||||
|
|
||||||
|
|
||||||
<string name="info_labels">什么:\\n请求:\\n内容语言:\\n服务:\\nGMT 时间:\\n版本:\\nOS 版本:\\nGlob. IP 范围:</string>
|
|
||||||
<string name="report_error">报告错误</string>
|
<string name="report_error">报告错误</string>
|
||||||
<string name="user_report">用户报告</string>
|
<string name="user_report">用户报告</string>
|
||||||
|
|
||||||
|
@ -97,6 +97,7 @@
|
|||||||
<string name="live_streams_not_supported">This is a LIVE STREAM. These are not yet supported.</string>
|
<string name="live_streams_not_supported">This is a LIVE STREAM. These are not yet supported.</string>
|
||||||
<string name="could_not_get_stream">Could not get any stream.</string>
|
<string name="could_not_get_stream">Could not get any stream.</string>
|
||||||
<string name="could_not_load_image">Could not load Image</string>
|
<string name="could_not_load_image">Could not load Image</string>
|
||||||
|
<string name="app_ui_crash">App/UI crashed</string>
|
||||||
<!-- error activity -->
|
<!-- error activity -->
|
||||||
<string name="sorry_string">Sorry that should not happen.</string>
|
<string name="sorry_string">Sorry that should not happen.</string>
|
||||||
<string name="guru_meditation" translatable="false">Guru Meditation.</string>
|
<string name="guru_meditation" translatable="false">Guru Meditation.</string>
|
||||||
@ -105,7 +106,7 @@
|
|||||||
<string name="error_snackbar_action">REPORT</string>
|
<string name="error_snackbar_action">REPORT</string>
|
||||||
<string name="what_device_headline">Info:</string>
|
<string name="what_device_headline">Info:</string>
|
||||||
<string name="what_happened_headline">What happened:</string>
|
<string name="what_happened_headline">What happened:</string>
|
||||||
<string name="info_labels">What:\\nRequest:\\nContent Lang:\\nService:\\nGMT Time:\\nVersion:\\nOS version:\\nGlob. IP range:</string>
|
<string name="info_labels">What:\\nRequest:\\nContent Lang:\\nService:\\nGMT Time:\\nPackage:\\nVersion:\\nOS version:\\nGlob. IP range:</string>
|
||||||
<string name="info_searched_lbl">Searched for:</string>
|
<string name="info_searched_lbl">Searched for:</string>
|
||||||
<string name="info_requested_stream_lbl">Requested stream:</string>
|
<string name="info_requested_stream_lbl">Requested stream:</string>
|
||||||
<string name="your_comment">Your comment (in English):</string>
|
<string name="your_comment">Your comment (in English):</string>
|
||||||
|
Loading…
Reference in New Issue
Block a user