I need help with youtube app, it shows an error ocurred every time i try to sign in from youtube app.
I tried deleting cache, youtube app, removing and adding again google account but nothing works.
Some advice?
Currenty i am on jb rom, but it started suddenly and worked before.
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Sent from my HTC One X using Tapatalk 2
Same as me, but it resume to normal after I removed the app and restore it.
Btw, you can try Rolle youtube to see whether it is work or not.
And here is the log if someone can help
I/PackageManager( 521): Adding preferred activity ComponentInfo{com.google.android.youtube/com.google.android.youtube.app.honeycomb.Shell$WatchActivity}:
I/PackageManager( 521): Adding preferred activity ComponentInfo{com.google.android.youtube/com.google.android.youtube.app.honeycomb.Shell$WatchActivity}:
I/PackageManager( 521): Adding preferred activity ComponentInfo{com.google.android.youtube/com.google.android.youtube.app.honeycomb.Shell$HomeActivity}:
I/PackageManager( 521): Adding preferred activity ComponentInfo{com.google.android.youtube/com.google.android.youtube.app.honeycomb.Shell$HomeActivity}:
I/ActivityManager( 521): START {flg=0x10000000 cmp=com.google.android.youtube/.AdvancedSettings u=0} from pid 9543
I/ActivityManager( 521): START {flg=0x10000000 cmp=com.google.android.youtube/.AdvancedSettings u=0} from pid 9543
I/WindowState( 521): WIN DEATH: Window{41627890 com.google.android.youtube/com.google.android.youtube.app.honeycomb.phone.HomeActivity paused=false}
I/ActivityManager( 521): Process com.google.android.youtube (pid 9543) has died.
I/WindowState( 521): WIN DEATH: Window{41ac40a8 com.google.android.youtube/com.google.android.youtube.AdvancedSettings paused=false}
W/ActivityManager( 521): Force removing ActivityRecord{41889190 com.google.android.youtube/.AdvancedSettings}: app died, no saved state
I/WindowState( 521): WIN DEATH: Window{41a6e4a8 com.google.android.youtube/com.google.android.youtube.AdvancedSettings paused=false}
I/ActivityManager( 521): Start proc com.google.android.youtube for activity com.google.android.youtube/.app.honeycomb.phone.HomeActivity: pid=9951 uid=10181 gids={3003, 1015, 1006, 1028}
I/PackageManager( 521): setEnabledSetting(), pkgName=com.google.android.youtube, clsName=com.google.android.youtube.app.prefetch.PrefetchService, state=1, flag=1, pid=9951, uid=10181
I/PackageManager( 521): setEnabledSetting(), pkgName=com.google.android.youtube, clsName=com.google.android.youtube.app.prefetch.PrefetchService$DeviceStateReceiver, state=1, flag=1, pid=9951, uid=10181
I/ActivityManager( 521): START {flg=0x10000000 cmp=com.google.android.youtube/.AdvancedSettings u=0} from pid 9951
I/ActivityManager( 521): START {cmp=com.google.android.youtube/.app.honeycomb.phone.WatchActivity (has extras) u=0} from pid 9951
E/ActivityThread( 9951): Activity com.google.android.youtube.app.honeycomb.phone.WatchActivity has leaked IntentReceiver [email protected] that was originally registered here. Are you missing a call to unregisterReceiver()?
E/ActivityThread( 9951): android.app.IntentReceiverLeaked: Activity com.google.android.youtube.app.honeycomb.phone.WatchActivity has leaked IntentReceiver [email protected] that was originally registered here. Are you missing a call to unregisterReceiver()?
E/ActivityThread( 9951): at com.google.android.youtube.app.honeycomb.i.a(SourceFile:1294)
E/ActivityThread( 9951): at com.google.android.youtube.app.honeycomb.BaseWatchActivity.onStart(SourceFile:569)
E/ActivityThread( 9951): Activity com.google.android.youtube.app.honeycomb.phone.WatchActivity has leaked IntentReceiver [email protected] that was originally registered here. Are you missing a call to unregisterReceiver()?
E/ActivityThread( 9951): android.app.IntentReceiverLeaked: Activity com.google.android.youtube.app.honeycomb.phone.WatchActivity has leaked IntentReceiver [email protected] that was originally registered here. Are you missing a call to unregisterReceiver()?
E/ActivityThread( 9951): at com.google.android.youtube.core.utils.HdmiReceiver.a(SourceFile:68)
E/ActivityThread( 9951): at com.google.android.youtube.app.honeycomb.BaseWatchActivity.onStart(SourceFile:559)
E/ActivityThread( 9951): Activity com.google.android.youtube.app.honeycomb.phone.WatchActivity has leaked IntentReceiver [email protected] that was originally registered here. Are you missing a call to unregisterReceiver()?
E/ActivityThread( 9951): android.app.IntentReceiverLeaked: Activity com.google.android.youtube.app.honeycomb.phone.WatchActivity has leaked IntentReceiver [email protected] that was originally registered here. Are you missing a call to unregisterReceiver()?
E/ActivityThread( 9951): at com.google.android.youtube.app.honeycomb.g.a(SourceFile:1264)
E/ActivityThread( 9951): at com.google.android.youtube.app.honeycomb.BaseWatchActivity.onStart(SourceFile:568)
E/ActivityThread( 9951): Activity com.google.android.youtube.app.honeycomb.phone.WatchActivity has leaked IntentReceiver [email protected] that was originally registered here. Are you missing a call to unregisterReceiver()?
E/ActivityThread( 9951): android.app.IntentReceiverLeaked: Activity com.google.android.youtube.app.honeycomb.phone.WatchActivity has leaked IntentReceiver [email protected] that was originally registered here. Are you missing a call to unregisterReceiver()?
E/ActivityThread( 9951): at com.google.android.youtube.core.utils.DockReceiver.a(SourceFile:61)
E/ActivityThread( 9951): at com.google.android.youtube.app.honeycomb.BaseWatchActivity.onStart(SourceFile:560)
I/WindowState( 521): WIN DEATH: Window{41b4b688 com.google.android.youtube/com.google.android.youtube.app.honeycomb.phone.HomeActivity paused=false}
I/ActivityManager( 521): Process com.google.android.youtube (pid 9951) has died.
Related
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Email app crashes when adding a new account with TLS/SSL(via IMAP)
This bug as on all builds 0-8
Does anyone knows if it is possible to report bugs on Experimental Builds ?
(i know the official site says not to post there but is there any other place ?)
Here is the relevant error:
Code:
D/alogcat ( 4961): stopped
D/alogcat ( 4961): starting ...
D/Beautiful Widgets( 771): Skipping abort security, location has been updated
I/GPSButton( 235): Update State
V/alogcat ( 4961): save instance
V/alogcat ( 4961): paused
D/alogcat ( 4961): stopping ...
D/alogcat ( 4961): stopped
D/dalvikvm( 246): GC_EXTERNAL_ALLOC freed 179K, 61% free 3125K/7879K, external 7807K/7879K, paused 47ms
D/Email ( 4860): Begin check of incoming email settings
I/ActivityManager( 167): Displayed com.android.email/.activity.setup.AccountSetupCheckSettings: +189ms
W/dalvikvm( 4860): threadid=10: thread exiting with uncaught exception (group=0x40015560)
D/dalvikvm( 167): GC_EXTERNAL_ALLOC freed 595K, 42% free 6677K/11463K, external 8160K/8166K, paused 73ms
I/Process ( 4860): Sending signal. PID: 4860 SIG: 9
D/szipinf ( 5032): Initializing inflate state
I/ActivityThread( 5032): Pub com.android.email.provider: com.android.email.provider.EmailProvider
I/ActivityThread( 5032): Pub com.android.email.attachmentprovider: com.android.email.provider.AttachmentProvider
I/ActivityThread( 5032): Pub com.android.exchange.provider: com.android.exchange.provider.ExchangeProvider
D/dalvikvm( 5032): GC_EXTERNAL_ALLOC freed 108K, 51% free 2676K/5379K, external 2002K/2137K, paused 24ms
D/EAS SyncManager( 5032): !!! EAS SyncManager, onCreate
D/Eas Debug( 5032): Logging:
I/ActivityManager( 167): Displayed com.android.email/.activity.setup.AccountSetupBasics: +39ms
W/KeyCharacterMap( 5032): No keyboard for id 0
W/KeyCharacterMap( 5032): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
I/GPSButton( 235): Update State
D/alogcat ( 4961): stopping ...
D/alogcat ( 4961): canceling periodic saves
V/alogcat ( 4961): started
V/alogcat ( 4961): resumed
D/alogcat ( 4961): starting ...
W/IInputConnectionWrapper( 5032): showStatusIcon on inactive InputConnection
D/dalvikvm( 4961): GC_CONCURRENT freed 605K, 60% free 2874K/7111K, external 2154K/2649K, paused 16ms+2ms
log is also attached
http://code.google.com/p/cyanogenmod/issues/list
Edit: No FC here. Did you wipe prior to flashing? This wipe includes: Factory Settings, Cache, Dalvik
then Fix Permissions?
zephiK said:
http://code.google.com/p/cyanogenmod/issues/list
Edit: No FC here. Did you wipe prior to flashing? This wipe includes: Factory Settings, Cache, Dalvik
then Fix Permissions?
Click to expand...
Click to collapse
Yes, i wiped...
I have tried to solve an issue on my app but I couldn't find a solution. I want the app to upload the images on Firebase Storage after the post is clicked. The problem is that when I click post the images are uploaded as .null and I can't add them as posts on my app here is a photo of Firebase Storage:
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Here is the code of PostsActivity:
Java:
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import android.app.ProgressDialog;
import android.content.ContentResolver;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.webkit.MimeTypeMap;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.example.selfcial.R;
import com.google.android.gms.tasks.Continuation;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.StorageTask;
import com.theartofdev.edmodo.cropper.CropImage;
import java.util.HashMap;
public class PostActivity extends AppCompatActivity {
Uri imageUri;
String myUrl;
StorageTask uploadTask;
StorageReference storageReference;
ImageView close, image_added;
TextView post;
EditText description;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_post);
close = findViewById(R.id.close);
image_added = findViewById(R.id.image_added);
post = findViewById(R.id.postPhoto);
description = findViewById(R.id.description);
storageReference = FirebaseStorage.getInstance().getReference("posts");
close.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(PostActivity.this, MainActivity.class);
startActivity(intent);
finish();
}
});
post.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
uploadImage();
}
});
CropImage.activity()
.setAspectRatio(1, 1)
.start(PostActivity.this);
}
private String getFileExtension(Uri uri) {
ContentResolver contentResolver = this.getContentResolver();
MimeTypeMap mimeTypeMap = MimeTypeMap.getSingleton();
return mimeTypeMap.getExtensionFromMimeType(contentResolver.getType(uri));
}
private void uploadImage() {
ProgressDialog progressDialog = new ProgressDialog(this);
progressDialog.setMessage("Posting please wait..");
progressDialog.show();
if (imageUri != null) {
StorageReference fileReference = storageReference.child(System.currentTimeMillis()
+ "." + getFileExtension(imageUri));
uploadTask = fileReference.putFile(imageUri);
uploadTask.continueWithTask(new Continuation() {
@Override
public Object then(@NonNull Task task) throws Exception {
if (task.isSuccessful()) {
throw task.getException();
}
return fileReference.getDownloadUrl();
}
}).addOnCompleteListener(new OnCompleteListener<Uri>() {
@Override
public void onComplete(@NonNull Task<Uri> task) {
if (task.isSuccessful()) {
Uri downloadUri = task.getResult();
myUrl = downloadUri.toString();
DatabaseReference reference = FirebaseDatabase.getInstance().getReference("posts");
String postId = reference.push().getKey();
HashMap<String, Object> hashMap = new HashMap<>();
hashMap.put("postId", postId);
hashMap.put("postImage", myUrl);
hashMap.put("description", description.getText().toString());
hashMap.put("publisher", FirebaseAuth.getInstance().getCurrentUser().getUid());
reference.child(postId).setValue(hashMap);
progressDialog.dismiss();
startActivity(new Intent(PostActivity.this, MainActivity.class));
finish();
}else {
Toast.makeText(PostActivity.this, "Failed.", Toast.LENGTH_SHORT).show();
}
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(PostActivity.this, ""+e.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}else {
Toast.makeText(this, "No image selected.", Toast.LENGTH_SHORT).show();
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE && resultCode == RESULT_OK) {
CropImage.ActivityResult result = CropImage.getActivityResult(data);
imageUri = result.getUri();
image_added.setImageURI(imageUri);
}else {
Toast.makeText(this, "Something gone wrong", Toast.LENGTH_SHORT).show();
startActivity(new Intent(PostActivity.this, MainActivity.class));
}
}
}
I thought that I have to initialize Uri inside onCreate method but nothing changed. What should it be? It shows on a Toas Failled and then Throw a null exception.
So far I've managed to put the first character on the left of RecyclerView item using the following ItemDecoration class:
Java:
public class Decoration extends RecyclerView.ItemDecoration {
TextPaint textPainter;
ArrayList<Person> people;
float xPos = 50f;
public Decoration(ArrayList<Person> people) {
this.people = people;
textPainter = new TextPaint(Paint.ANTI_ALIAS_FLAG);
textPainter.setTextSize(60f);
textPainter.setTextAlign(Paint.Align.CENTER);
}
@Override
public void onDrawOver(@NonNull Canvas c, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) {
super.onDrawOver(c, parent, state);
var height = parent.getChildAt(0).getHeight();
var chars = new ArrayList<Character>(parent.getChildCount());
for (int i = 0; i < parent.getChildCount(); i++) {
int index = parent.getChildAdapterPosition(parent.getChildAt(i));
var text = people.get(index).name.charAt(0);
if (chars.size() == 0) {
chars.add(text);
c.drawText(String.valueOf(text), xPos, height * (i + 1), textPainter);
}
if (chars.get(chars.size() - 1) != text) {
chars.add(text);
c.drawText(String.valueOf(text), xPos, height * (i + 1), textPainter);
}
}
}
}
and the output looks like this:
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
These(A, B, C, etc.) characters snap to their position as I scroll up/down.
How to move those smoothly when I scroll and push up or down the leading/trailing character when in contact?
Without considering the size of the list, the following, in onDrawOver, actually does what I want:
Java:
public void onDrawOver(@NonNull Canvas c, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) {
super.onDrawOver(c, parent, state);
var height = parent.getChildAt(0).getHeight();
var chars = new ArrayList<Character>(parent.getChildCount());
for (int i = 0; i < parent.getChildCount(); i++) {
var child = parent.getChildAt(i);
int index = parent.getChildAdapterPosition(child);
var text = people.get(index).name.charAt(0);
if (chars.size() == 0) {
chars.add(text);
var text2 = people.get(index + 1).name.charAt(0);
if(text2 != text) {
c.drawCircle(xPos, child.getY() + 60, 50f, circlePainter);
c.drawText(String.valueOf(text), xPos, child.getY() + 80, textPainter);
}
else{
c.drawCircle(xPos, height * (i + 1) - 80, 50f, circlePainter);
c.drawText(String.valueOf(text), xPos, height * (i + 1) - 60, textPainter);
}
}
if (chars.get(chars.size() - 1) != text) {
chars.add(text);
c.drawCircle(xPos, child.getY() + 60, 50f, circlePainter);
c.drawText(String.valueOf(text), xPos, child.getY() + 80, textPainter);
}
}
}
Here's the output:
Nice!
Background
I needed to develop a function for dynamically loading HTML5 websites that matched the system language. The website internationalization in my project was implemented by dynamically loading URLs. For example, if the system language of a mobile phone is Japanese, the URLs of web pages in Japanese are loaded. For simplified Chinese, those in simplified Chinese are loaded, and for English, those in English are loaded, and so on. Here, I have listed the steps for your reference.
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Solution
Step 1: Bind a variable.
Bind a variable to the src attribute of the web component, to ensure that the attribute will not have a fixed value. In the following code, loadUrl in {{}} is a bound variable. It is defined under script in the UX file. You can skip this step if your project was created using the HTML5 template in Huawei Quick App IDE, downloaded from https://developer.huawei.com/consumer/en/doc/development/quickApp-Guides/quickapp-installtool, because the variable will be bound by the template code.
JavaScript:
<!-- template -->
<web src="{{loadUrl}}"
</web>
<!-- script -->
export default {
data: {
loadUrl: "https://transit.navitime.com/en",
},
Step 2: Initialize the variable.
Use the onInit() method in the quick app’s lifecycle to call the device API to obtain the system language and load the HTML5 page in the obtained language.
JavaScript:
onInit: function () {
const device = require("@system.device")
const res = device.getInfoSync();
let local = res.language; //system language
let region = res.region; //system region
console.info('onInit :localole= ' + local + ", region=" + region);
if (local === 'zh') {
if (region === "CN") {
this.loadUrl = "https://transit.navitime.com/zh-cn/";
} else if (region === "TW") {
this.loadUrl = "https://transit.navitime.com/zh-tw/";
}
} else if (local === 'ja') {
this.loadUrl = "https://transit.navitime.com/ja/?from=huawei.quickapp";
} else {
// For other languages, the HTML5 page in the default language is used.
this.loadUrl = "https://transit.navitime.com/en";
}
},
Step 3: Add a listener for system language switch.
Perform this step if you want the language on the HTML5 page to change accordingly, as the user changes the system language when the HTML5 quick app is running. You can skip this step if you don’t need to implement this function. The user can simply exit the app and re-enter it.
The code for adding a listener to listen to the system language switch is as follows:
JavaScript:
onConfigurationChanged(object) {
console.log("onConfigurationChanged object=" + JSON.stringify(object));
if (object.type === "locale") {
const configuration=require("@system.configuration")
var localeObject = configuration.getLocale();
let local= localeObject.language;
let region= localeObject.countryOrRegion;
console.info(onConfigurationChanged(object :localole= ' + local + ", region=" + region);
if (local === 'zh') {
if (region === "CN") {
this.loadUrl = "https://transit.navitime.com/zh-cn/";
} else if (region === "TW") {
this.loadUrl = "https://transit.navitime.com/zh-tw/";
}
} else if (local === 'ja') {
this.loadUrl = "https://transit.navitime.com/ja/?from=huawei.quickapp";
} else {
// For other languages, the HTML5 page in the default language is used.
this.loadUrl = "https://transit.navitime.com/en";
}
}
},
Summary
I hope you’ll find this post helpful, when planning the global release of your HTML5 quick app. Feel free to leave a question or comment below, to share your own experiences.
Impressive
Will help HTML5 developers for developing on huawei.
Hi there, i have entered the pixel 5 giveaway. Thank you for this chance XDA developers and Huawei team. Miss honor and Huawei phones in India.
Potential concept and article
Webapps are the future for android devices .
LibreTrack
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Private, cross-platform package tracking app.
Track postal items directly on your device using accounts of postal services. The app respects your privacy and freedom: you don't use third-party online services.
Use, see, change and share; with all.
Spoiler: Screenshots
Mirror
F-Droid: https://f-droid.org/packages/org.proninyaroslav.libretrack
Google Play: https://play.google.com/store/apps/details?id=org.proninyaroslav.libretrack
GitHub: https://github.com/proninyaroslav/libretrack/releases
Android File Host: https://www.androidfilehost.com/?w=files&flid=326398
Linux
--
Snap Store: https://snapcraft.io/libretrack
Flathub: https://flathub.org/apps/details/ru.proninyaroslav.libretrack
Matrix Room: https://matrix.to/#libretrack:matrix.org
Telegram: https://t.me/LibreTrack
Features
Free and Open Source software (FOSS)
Support for various platforms and devices (currently Android only)
Support accounts of different carriers
Detailed information about the postal items, carriers, tracking history
Local push notifications
Automatic tracking in the background, and also manual refreshing
Ability to add a list of track numbers
Filter and sort numbers by activity date, package status, carrier, etc
Barcode and QR code scanner for tracking numbers
Barcode generator
Archiving tracking numbers
Material Design 2.0
Night theme
Responsive UI for different devices form factors
Source codehttps://github.com/proninyaroslav/libretrack
Version 1.0.1
What's new:
Bugfixes:
[UPS] Handling package activity without address
Clicking of the notification crash
Version 1.1.0
What's new:
Added Russian Post support
Added Spanish translation
Version 1.2.0
What's new:
Added:
Linux support
Showing activity location in the notification
Improving package status differentiation
Bugfixes:
[UPS] Handling empty activity location
Crash report serializing
Version 1.3.0
What's new:
Added USPS support
Added Italian translation
[Linux] System tray icon is disabled by default
Bugfixes:
[Linux] Sharing and opening links in Flatpak