Skip to content
This repository has been archived by the owner on Oct 19, 2021. It is now read-only.

Commit

Permalink
fixed issue causing the app crash
Browse files Browse the repository at this point in the history
  • Loading branch information
velitasali committed Jan 24, 2018
1 parent 8b78d82 commit 1028a2b
Show file tree
Hide file tree
Showing 12 changed files with 154 additions and 79 deletions.
4 changes: 2 additions & 2 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ android {
applicationId "com.genonbeta.TrebleShot"
minSdkVersion 14
targetSdkVersion 26
versionCode 57
versionName "1.2.5.2"
versionCode 58
versionName "1.2.5.3"
}

lintOptions {
Expand Down
2 changes: 1 addition & 1 deletion app/release/output.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
[{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":56},"path":"app-release.apk","properties":{"packageId":"com.genonbeta.TrebleShot","split":"","minSdkVersion":"14"}}]
[{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":57},"path":"app-release.apk","properties":{"packageId":"com.genonbeta.TrebleShot","split":"","minSdkVersion":"14"}}]
3 changes: 2 additions & 1 deletion app/src/main/java/com/genonbeta/CoolSocket/CoolSocket.java
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,8 @@ public boolean isComponentsReady()

public boolean isInterrupted()
{
return this.getServerThread().isInterrupted();
return this.getServerThread() == null ||
this.getServerThread().isInterrupted();
}

public boolean isServerAlive()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,6 @@ public static class FileHolder extends Shareable

public FileHolder(String friendlyName, String fileInfo, File file, boolean isFolder)
{
// FIXME: 18.01.2018 Folder may not have
super(friendlyName, friendlyName, file.lastModified(), file.length(), Uri.fromFile(file));

this.fileInfo = fileInfo;
Expand Down
75 changes: 58 additions & 17 deletions app/src/main/java/com/genonbeta/TrebleShot/app/Activity.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,39 +6,27 @@
import android.os.Build;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.annotation.NonNull;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;

import com.genonbeta.TrebleShot.R;
import com.genonbeta.TrebleShot.dialog.RationalePermissionRequest;
import com.genonbeta.TrebleShot.service.CommunicationService;
import com.genonbeta.TrebleShot.util.AppUtils;

import java.util.ArrayList;

public abstract class Activity extends AppCompatActivity
{
private SharedPreferences mPreferences;
private AlertDialog mOngoingRequest;

@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);

PreferenceManager.setDefaultValues(this, R.xml.preferences_main, false);

if (Build.VERSION.SDK_INT >= 16) {
RationalePermissionRequest storagePermission = new RationalePermissionRequest(this, Manifest.permission.WRITE_EXTERNAL_STORAGE);

storagePermission.setTitle(R.string.text_requestPermissionStorage);
storagePermission.setMessage(R.string.text_requestPermissionStorageSummary);
storagePermission.show();
}

if (Build.VERSION.SDK_INT >= 26) {
RationalePermissionRequest readPhonePermission = new RationalePermissionRequest(this, Manifest.permission.READ_PHONE_STATE);

readPhonePermission.setTitle(R.string.text_requestPermissionReadPhoneState);
readPhonePermission.setMessage(R.string.text_requestPermissionReadPhoneStateSummary);
readPhonePermission.show();
}
}

@Override
Expand All @@ -48,11 +36,64 @@ protected void onStart()
AppUtils.startForegroundService(this, new Intent(this, CommunicationService.class));
}

@Override
protected void onResume()
{
super.onResume();

if (!AppUtils.checkRunningConditions(this))
requestRequiredPermissions();
}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults)
{
super.onRequestPermissionsResult(requestCode, permissions, grantResults);

if (AppUtils.checkRunningConditions(this))
AppUtils.startForegroundService(this, new Intent(this, CommunicationService.class));
else
requestRequiredPermissions();
}

protected SharedPreferences getDefaultPreferences()
{
if (mPreferences == null)
mPreferences = PreferenceManager.getDefaultSharedPreferences(this);

return mPreferences;
}

public ArrayList<RationalePermissionRequest.PermissionRequest> getRequiredPermissions()
{
ArrayList<RationalePermissionRequest.PermissionRequest> permissionRequests = new ArrayList<>();

if (Build.VERSION.SDK_INT >= 16) {
permissionRequests.add(new RationalePermissionRequest.PermissionRequest(this,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
R.string.text_requestPermissionStorage,
R.string.text_requestPermissionStorageSummary));
}

if (Build.VERSION.SDK_INT >= 26) {
permissionRequests.add(new RationalePermissionRequest.PermissionRequest(this,
Manifest.permission.READ_PHONE_STATE,
R.string.text_requestPermissionReadPhoneState,
R.string.text_requestPermissionReadPhoneStateSummary));
}

return permissionRequests;
}

public boolean requestRequiredPermissions()
{
if (mOngoingRequest != null && mOngoingRequest.isShowing())
return false;

for (RationalePermissionRequest.PermissionRequest request : getRequiredPermissions())
if ((mOngoingRequest = RationalePermissionRequest.requestIfNecessary(this, request)) != null)
return false;

return true;
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.genonbeta.TrebleShot.dialog;

import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
Expand All @@ -21,60 +22,74 @@

public class RationalePermissionRequest extends AlertDialog.Builder
{
public Activity mActivity;
public String mPermission;
public PermissionRequest mPermissionQueue;

public RationalePermissionRequest(Activity activity, @NonNull String permission)
public RationalePermissionRequest(final Activity activity, @NonNull PermissionRequest permission)
{
super(activity);

mActivity = activity;
mPermission = permission;
mPermissionQueue = permission;

setCancelable(false);
setTitle(R.string.text_permissionRequest);
}
setTitle(permission.title);
setMessage(permission.message);

@Override
public AlertDialog show()
{
if (ActivityCompat.checkSelfPermission(mActivity, mPermission) != PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(mActivity, mPermission))
setPositiveButton(R.string.butn_settings, new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialogInterface, int i)
{
Intent intent = new Intent()
.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
.setData(Uri.fromParts("package", mActivity.getPackageName(), null));

mActivity.startActivity(intent);
mActivity.finish();
}
});
else
setPositiveButton(R.string.butn_ask, new DialogInterface.OnClickListener()
if (ActivityCompat.shouldShowRequestPermissionRationale(activity, mPermissionQueue.permission))
setPositiveButton(R.string.butn_settings, new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialogInterface, int i)
{
@Override
public void onClick(DialogInterface dialogInterface, int i)
{
ActivityCompat.requestPermissions(mActivity, new String[]{mPermission}, REQUEST_PERMISSION_ALL);
}
});
Intent intent = new Intent()
.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
.setData(Uri.fromParts("package", activity.getPackageName(), null));

setNegativeButton(R.string.butn_reject, new DialogInterface.OnClickListener()
activity.startActivity(intent);
}
});
else
setPositiveButton(R.string.butn_ask, new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialogInterface, int i)
{
mActivity.finish();
ActivityCompat.requestPermissions(activity, new String[]{mPermissionQueue.permission}, REQUEST_PERMISSION_ALL);
}
});

super.show();
setNegativeButton(R.string.butn_reject, new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialogInterface, int i)
{
activity.finish();
}
});
}

public static AlertDialog requestIfNecessary(Activity activity, PermissionRequest permissionQueue)
{
return ActivityCompat.checkSelfPermission(activity, permissionQueue.permission) == PackageManager.PERMISSION_GRANTED
? null
: new RationalePermissionRequest(activity, permissionQueue).show();
}

public static class PermissionRequest
{
public String permission;
public String title;
public String message;

public PermissionRequest(String permission, String title, String message)
{
this.permission = permission;
this.title = title;
this.message = message;
}

return null;
public PermissionRequest(Context context, String permission, int titleRes, int messageRes)
{
this(permission, context.getString(titleRes), context.getString(messageRes));
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import android.support.v4.content.ContextCompat;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.app.AlertDialog;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
Expand Down Expand Up @@ -514,8 +515,10 @@ public void onClick(View v)
else if (NetworkStatusReceiver.WIFI_AP_STATE_CHANGED.equals(intent.getAction()))
updateHotspotState();
else if (WifiManager.WIFI_STATE_CHANGED_ACTION.equals(intent.getAction())
&& WifiManager.WIFI_STATE_ENABLED == intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, -1))
&& WifiManager.WIFI_STATE_ENABLED == intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, -1)) {
Log.d(TAG, "Fragment you bitvh");
requestRefresh();
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -107,11 +107,6 @@ public void onCreate()
{
super.onCreate();

if (!mCommunicationServer.start() || !mSeamlessServer.start()) {
stopSelf();
return;
}

mNotificationUtils = new NotificationUtils(this);
mDatabase = new AccessDatabase(this);
mNsdDiscovery = new NsdDiscovery(getApplicationContext(), getDatabase());
Expand All @@ -126,9 +121,13 @@ public void onCreate()
mMediaScanner.connect();
mNsdDiscovery.registerService();


getWifiLock().acquire();
updateServiceState(getNotificationUtils().getPreferences().getBoolean("trust_always", false));

if (!AppUtils.checkRunningConditions(this)
|| !mCommunicationServer.start()
|| !mSeamlessServer.start())
stopSelf();
}

@Override
Expand All @@ -139,7 +138,7 @@ public int onStartCommand(Intent intent, int flags, int startId)
if (intent != null)
Log.d(TAG, "onStart() : action = " + intent.getAction());

if (intent != null) {
if (intent != null && AppUtils.checkRunningConditions(this)) {
if (ACTION_FILE_TRANSFER.equals(intent.getAction())) {
final int groupId = intent.getIntExtra(EXTRA_GROUP_ID, -1);
final int notificationId = intent.getIntExtra(NotificationUtils.EXTRA_NOTIFICATION_ID, -1);
Expand Down Expand Up @@ -205,8 +204,8 @@ public void onConnect(CoolSocket.Client connect)
return START_NOT_STICKY;
}
} else if (ACTION_CANCEL_INDEXING.equals(intent.getAction())) {
final int notificationId = intent.getIntExtra(NotificationUtils.EXTRA_NOTIFICATION_ID, -1);
final int groupId = intent.getIntExtra(EXTRA_GROUP_ID, -1);
int notificationId = intent.getIntExtra(NotificationUtils.EXTRA_NOTIFICATION_ID, -1);
int groupId = intent.getIntExtra(EXTRA_GROUP_ID, -1);

mNotificationUtils.cancel(notificationId);

Expand Down Expand Up @@ -304,7 +303,8 @@ public void onDestroy()
if (getHotspotUtils().unloadPreviousConfig())
getHotspotUtils().disable();

getWifiLock().release();
if (getWifiLock().isHeld())
getWifiLock().release();

stopForeground(true);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ public int onStartCommand(Intent intent, int flags, int startId)
{
super.onStartCommand(intent, flags, startId);

if (intent != null)
if (intent != null && AppUtils.checkRunningConditions(this))
if (ACTION_SCAN_DEVICES.equals(intent.getAction())) {
String result = SCANNER_NOT_AVAILABLE;

Expand Down
10 changes: 10 additions & 0 deletions app/src/main/java/com/genonbeta/TrebleShot/util/AppUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,24 @@
import android.support.v4.app.ActivityCompat;

import com.genonbeta.TrebleShot.config.AppConfig;
import com.genonbeta.TrebleShot.dialog.RationalePermissionRequest;
import com.genonbeta.TrebleShot.object.NetworkDevice;

import java.util.ArrayList;

public class AppUtils
{
public static final String TAG = AppUtils.class.getSimpleName();

private static int mUniqueNumber = 0;

public static boolean checkRunningConditions(Context context)
{
return ActivityCompat.checkSelfPermission(context, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED
&& (Build.VERSION.SDK_INT < 26
|| ActivityCompat.checkSelfPermission(context, Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED);
}

public static String getHotspotName(Context context)
{
String apName = AppUtils.getLocalDeviceName(context)
Expand Down
Loading

0 comments on commit 1028a2b

Please sign in to comment.