Add permission check for M and do not die when enabling backend
This commit is contained in:
parent
724063f668
commit
859fbd4e4c
2
extern/MicroGUiTools
vendored
2
extern/MicroGUiTools
vendored
|
@ -1 +1 @@
|
||||||
Subproject commit a65d5dfba834a32b2b45023f2c3e3a98533c7601
|
Subproject commit 1e8926edd95dc155d57c1306d7b13448cd895740
|
|
@ -26,6 +26,7 @@ import android.content.pm.ServiceInfo;
|
||||||
import android.os.IBinder;
|
import android.os.IBinder;
|
||||||
import android.preference.DialogPreference;
|
import android.preference.DialogPreference;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
|
import android.util.Log;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
@ -33,6 +34,7 @@ import android.widget.ArrayAdapter;
|
||||||
import android.widget.CheckBox;
|
import android.widget.CheckBox;
|
||||||
import android.widget.ListView;
|
import android.widget.ListView;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
import android.widget.Toast;
|
||||||
|
|
||||||
import org.microg.nlp.Preferences;
|
import org.microg.nlp.Preferences;
|
||||||
import org.microg.nlp.R;
|
import org.microg.nlp.R;
|
||||||
|
@ -199,27 +201,33 @@ abstract class AbstractBackendPreference extends DialogPreference {
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void enableBackend(BackendInfo backendInfo) {
|
protected void enableBackend(BackendInfo backendInfo) {
|
||||||
if (backendInfo.getMeta(METADATA_BACKEND_INIT_ACTIVITY) != null) {
|
try {
|
||||||
getContext().startActivity(createExternalIntent(backendInfo, METADATA_BACKEND_INIT_ACTIVITY));
|
if (backendInfo.getMeta(METADATA_BACKEND_INIT_ACTIVITY) != null) {
|
||||||
} else {
|
getContext().startActivity(createExternalIntent(backendInfo, METADATA_BACKEND_INIT_ACTIVITY));
|
||||||
Intent intent = buildBackendIntent();
|
} else {
|
||||||
intent.setPackage(backendInfo.serviceInfo.packageName);
|
Intent intent = buildBackendIntent();
|
||||||
intent.setClassName(backendInfo.serviceInfo.packageName, backendInfo.serviceInfo.name);
|
intent.setPackage(backendInfo.serviceInfo.packageName);
|
||||||
getContext().bindService(intent, new ServiceConnection() {
|
intent.setClassName(backendInfo.serviceInfo.packageName, backendInfo.serviceInfo.name);
|
||||||
@Override
|
getContext().bindService(intent, new ServiceConnection() {
|
||||||
public void onServiceConnected(ComponentName name, IBinder service) {
|
@Override
|
||||||
Intent i = getBackendInitIntent(service);
|
public void onServiceConnected(ComponentName name, IBinder service) {
|
||||||
if (i != null) {
|
Intent i = getBackendInitIntent(service);
|
||||||
getContext().startActivity(i);
|
if (i != null) {
|
||||||
|
getContext().startActivity(i);
|
||||||
|
}
|
||||||
|
getContext().unbindService(this);
|
||||||
}
|
}
|
||||||
getContext().unbindService(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onServiceDisconnected(ComponentName name) {
|
public void onServiceDisconnected(ComponentName name) {
|
||||||
|
|
||||||
}
|
}
|
||||||
}, BIND_AUTO_CREATE);
|
}, BIND_AUTO_CREATE);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
backendInfo.enabled = false;
|
||||||
|
Toast.makeText(getContext(), "Error initializing backend", Toast.LENGTH_SHORT).show();
|
||||||
|
resetAdapter();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,12 +28,17 @@ import org.microg.nlp.BuildConfig;
|
||||||
import org.microg.nlp.R;
|
import org.microg.nlp.R;
|
||||||
import org.microg.tools.selfcheck.NlpOsCompatChecks;
|
import org.microg.tools.selfcheck.NlpOsCompatChecks;
|
||||||
import org.microg.tools.selfcheck.NlpStatusChecks;
|
import org.microg.tools.selfcheck.NlpStatusChecks;
|
||||||
|
import org.microg.tools.selfcheck.PermissionCheckGroup;
|
||||||
import org.microg.tools.selfcheck.SelfCheckGroup;
|
import org.microg.tools.selfcheck.SelfCheckGroup;
|
||||||
import org.microg.tools.ui.AbstractAboutFragment;
|
import org.microg.tools.ui.AbstractAboutFragment;
|
||||||
import org.microg.tools.ui.AbstractSelfCheckFragment;
|
import org.microg.tools.ui.AbstractSelfCheckFragment;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import static android.Manifest.permission.ACCESS_COARSE_LOCATION;
|
||||||
|
import static android.os.Build.VERSION.SDK_INT;
|
||||||
|
import static android.os.Build.VERSION_CODES.LOLLIPOP_MR1;
|
||||||
|
|
||||||
public class SettingsActivity extends AppCompatActivity {
|
public class SettingsActivity extends AppCompatActivity {
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
@ -94,6 +99,9 @@ public class SettingsActivity extends AppCompatActivity {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void prepareSelfCheckList(List<SelfCheckGroup> checks) {
|
protected void prepareSelfCheckList(List<SelfCheckGroup> checks) {
|
||||||
|
if (SDK_INT > LOLLIPOP_MR1) {
|
||||||
|
checks.add(new PermissionCheckGroup(ACCESS_COARSE_LOCATION));
|
||||||
|
}
|
||||||
checks.add(new NlpOsCompatChecks());
|
checks.add(new NlpOsCompatChecks());
|
||||||
checks.add(new NlpStatusChecks());
|
checks.add(new NlpStatusChecks());
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue