尝试修复某些设备上死机和重启的问题。修复在4.4上无法显示悬浮窗的问题。增加英文语言。增加获取WebView内容。
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package com.stardust.app;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
@@ -16,6 +17,7 @@ public abstract class Fragment extends android.support.v4.app.Fragment {
|
||||
|
||||
private View mView;
|
||||
|
||||
@NonNull
|
||||
public View getView() {
|
||||
return mView;
|
||||
}
|
||||
@@ -36,14 +38,9 @@ public abstract class Fragment extends android.support.v4.app.Fragment {
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||
mView = createView(inflater, container, savedInstanceState);
|
||||
afterCreateView();
|
||||
return mView;
|
||||
}
|
||||
|
||||
protected void afterCreateView() {
|
||||
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public abstract View createView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState);
|
||||
|
||||
|
||||
@@ -4,16 +4,35 @@ import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.preference.PreferenceManager;
|
||||
|
||||
import com.stardust.automator.AccessibilityEventCommandHost;
|
||||
|
||||
/**
|
||||
* Created by Stardust on 2017/1/31.
|
||||
*/
|
||||
public class Pref {
|
||||
|
||||
private static final SharedPreferences DISPOSABLE_BOOLEAN = App.getApp().getSharedPreferences("DISPOSABLE_BOOLEAN", Context.MODE_PRIVATE);
|
||||
public static final String SAMPLE_SCRIPTS_COPIED = "SAMPLE_SCRIPTS_COPIED";
|
||||
private static final String KEY_MAX_TEXT_LENGTH_FOR_CODE_COMPLETION = "KEY_MAX_TEXT_LENGTH_FOR_CODE_COMPLETION";
|
||||
public static final String KEY_DRAWER_HEADER_IMAGE_PATH = "KEY_DRAWER_HEADER_IMAGE_PATH";
|
||||
public static final String KEY_APP_BAR_IMAGE_PATH = "KEY_APP_BAR_IMAGE_PATH";
|
||||
private static SharedPreferences.OnSharedPreferenceChangeListener onSharedPreferenceChangeListener = new SharedPreferences.OnSharedPreferenceChangeListener() {
|
||||
@Override
|
||||
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
|
||||
if (key.equals(App.getResString(R.string.key_run_mode))) {
|
||||
AccessibilityEventCommandHost.getInstance().setRunMode(getRunModeFromValue(sharedPreferences.getString(key, null)));
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
private static int getRunModeFromValue(String value) {
|
||||
switch (value) {
|
||||
case "KEY_THREAD_POOL":
|
||||
return AccessibilityEventCommandHost.RUN_MODE_THREAD_POOL;
|
||||
case "KEY_NEW_THREAD_EVERY_TIME":
|
||||
return AccessibilityEventCommandHost.RUN_MODE_NEW_THREAD_EVERY_TIME;
|
||||
default:
|
||||
return AccessibilityEventCommandHost.RUN_MODE_SINGLE_THREAD;
|
||||
}
|
||||
}
|
||||
|
||||
public static SharedPreferences def() {
|
||||
return PreferenceManager.getDefaultSharedPreferences(App.getApp());
|
||||
@@ -64,4 +83,23 @@ public class Pref {
|
||||
return getDisposableBoolean("isFirstUsing", true);
|
||||
}
|
||||
|
||||
public static String getDrawerHeaderImagePath() {
|
||||
return def().getString(KEY_DRAWER_HEADER_IMAGE_PATH, null);
|
||||
}
|
||||
|
||||
public static void setDrawerHeaderImagePath(String path) {
|
||||
def().edit().putString(KEY_DRAWER_HEADER_IMAGE_PATH, path).apply();
|
||||
}
|
||||
|
||||
public static String getAppBarImagePath() {
|
||||
return def().getString(KEY_APP_BAR_IMAGE_PATH, null);
|
||||
}
|
||||
|
||||
public static void setAppBarImagePath(String path) {
|
||||
def().edit().putString(KEY_APP_BAR_IMAGE_PATH, path).apply();
|
||||
}
|
||||
|
||||
static {
|
||||
def().registerOnSharedPreferenceChangeListener(onSharedPreferenceChangeListener);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,17 +2,12 @@ package com.stardust.scriptdroid.droid;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.util.Log;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.jraska.console.timber.ConsoleTree;
|
||||
import com.stardust.scriptdroid.App;
|
||||
import com.stardust.scriptdroid.Pref;
|
||||
import com.stardust.scriptdroid.R;
|
||||
import com.stardust.scriptdroid.droid.runtime.DroidRuntime;
|
||||
import com.stardust.scriptdroid.droid.runtime.ScriptStopException;
|
||||
import com.stardust.scriptdroid.droid.script.JavaScriptEngine;
|
||||
import com.stardust.scriptdroid.droid.script.RhinoJavaScriptEngine;
|
||||
import com.stardust.scriptdroid.droid.script.ScriptExecuteActivity;
|
||||
import com.stardust.scriptdroid.service.VolumeChangeObverseService;
|
||||
import com.stardust.scriptdroid.tool.FileUtils;
|
||||
@@ -21,7 +16,6 @@ import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.Serializable;
|
||||
import java.text.DateFormat;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
|
||||
import timber.log.Timber;
|
||||
@@ -102,7 +96,7 @@ public class Droid {
|
||||
}
|
||||
|
||||
public void runScriptFile(File file, OnRunFinishedListener listener) {
|
||||
Timber.v(DateFormat.getTimeInstance().format(new Date()) + "/" + App.getResString(R.string.text_start_running) + file);
|
||||
Timber.v(DateFormat.getTimeInstance().format(new Date()) + " " + App.getResString(R.string.text_start_running) + " " + file);
|
||||
listener = listener == null ? DEFAULT_LISTENER : listener;
|
||||
try {
|
||||
checkFile(file);
|
||||
@@ -178,7 +172,7 @@ public class Droid {
|
||||
public void run() {
|
||||
try {
|
||||
if (mScript.startsWith(AUTO))
|
||||
DroidRuntime.getRuntime().ensureAccessibilityServiceEnable();
|
||||
DroidRuntime.getRuntime().ensureAccessibilityServiceEnabled();
|
||||
mOnRunFinishedListener.onRunFinished(JAVA_SCRIPT_ENGINE.execute(mScript));
|
||||
} catch (Exception e) {
|
||||
mOnRunFinishedListener.onException(e);
|
||||
|
||||
@@ -12,7 +12,6 @@ import android.os.Environment;
|
||||
import android.os.Handler;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.text.SpannableString;
|
||||
import android.text.SpannableStringBuilder;
|
||||
import android.text.Spanned;
|
||||
import android.text.style.ForegroundColorSpan;
|
||||
import android.util.Log;
|
||||
@@ -201,7 +200,7 @@ public class DroidRuntime {
|
||||
}
|
||||
|
||||
private <T> T performAction(Action action) {
|
||||
ensureAccessibilityServiceEnable();
|
||||
ensureAccessibilityServiceEnabled();
|
||||
ActionPerformAccessibilityDelegate.setAction(action);
|
||||
synchronized (mActionPerformLock) {
|
||||
try {
|
||||
@@ -214,7 +213,7 @@ public class DroidRuntime {
|
||||
return (T) action.getResult();
|
||||
}
|
||||
|
||||
public void ensureAccessibilityServiceEnable() {
|
||||
public void ensureAccessibilityServiceEnabled() {
|
||||
if (AccessibilityWatchDogService.getInstance() == null) {
|
||||
String errorMessage = null;
|
||||
if (AccessibilityServiceUtils.isAccessibilityServiceEnabled(App.getApp(), AccessibilityWatchDogService.class)) {
|
||||
@@ -263,12 +262,12 @@ public class DroidRuntime {
|
||||
}
|
||||
|
||||
public String currentPackage() {
|
||||
ensureAccessibilityServiceEnable();
|
||||
ensureAccessibilityServiceEnabled();
|
||||
return AccessibilityInfoProvider.getInstance().getLatestPackage();
|
||||
}
|
||||
|
||||
public String currentActivity() {
|
||||
ensureAccessibilityServiceEnable();
|
||||
ensureAccessibilityServiceEnabled();
|
||||
return AccessibilityInfoProvider.getInstance().getLatestActivity();
|
||||
}
|
||||
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
package com.stardust.scriptdroid.droid.runtime;
|
||||
|
||||
import android.accessibilityservice.AccessibilityService;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.util.Log;
|
||||
import android.view.accessibility.AccessibilityEvent;
|
||||
import android.view.accessibility.AccessibilityNodeInfo;
|
||||
|
||||
@@ -69,12 +67,16 @@ public class UiSelector extends UiGlobalSelector {
|
||||
private static final String TAG = "UiSelector";
|
||||
|
||||
public UiObjectCollection find() {
|
||||
DroidRuntime.getRuntime().ensureAccessibilityServiceEnable();
|
||||
ensureAccessibilityServiceEnabled();
|
||||
FindCommand command = new FindCommand();
|
||||
AccessibilityEventCommandHost.getInstance().executeAndWaitForEvent(command);
|
||||
return command.result;
|
||||
}
|
||||
|
||||
private void ensureAccessibilityServiceEnabled(){
|
||||
DroidRuntime.getRuntime().ensureAccessibilityServiceEnabled();
|
||||
}
|
||||
|
||||
|
||||
@NonNull
|
||||
public UiObjectCollection untilFind() {
|
||||
|
||||
@@ -30,7 +30,7 @@ public class ActionPerformAccessibilityDelegate implements AccessibilityDelegate
|
||||
|
||||
private static Action action;
|
||||
|
||||
private Executor mExecutor = Executors.newFixedThreadPool(5);
|
||||
//private Executor mExecutor = Executors.newFixedThreadPool(5);
|
||||
|
||||
public static void setAction(Action action) {
|
||||
synchronized (ACTION_LOCK) {
|
||||
@@ -54,7 +54,7 @@ public class ActionPerformAccessibilityDelegate implements AccessibilityDelegate
|
||||
}
|
||||
|
||||
private void performAction(final AccessibilityNodeInfo root, final Action action) {
|
||||
mExecutor.execute(new Runnable() {
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
Log.i(TAG, "perform action:" + action);
|
||||
@@ -66,7 +66,7 @@ public class ActionPerformAccessibilityDelegate implements AccessibilityDelegate
|
||||
onActionPerformed();
|
||||
}
|
||||
}
|
||||
});
|
||||
}.run();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -17,10 +17,12 @@ import com.stardust.hover.SimpleHoverMenuTransitionListener;
|
||||
import com.stardust.hover.WindowHoverMenu;
|
||||
import com.stardust.scriptdroid.App;
|
||||
import com.stardust.scriptdroid.R;
|
||||
import com.stardust.scriptdroid.droid.runtime.DroidRuntime;
|
||||
import com.stardust.scriptdroid.external.floating_window.view.FloatingLayoutBoundsView;
|
||||
import com.stardust.scriptdroid.external.floating_window.view.FloatingLayoutHierarchyView;
|
||||
import com.stardust.scriptdroid.layout_inspector.LayoutInspector;
|
||||
import com.stardust.scriptdroid.layout_inspector.NodeInfo;
|
||||
import com.stardust.scriptdroid.tool.AccessibilityServiceTool;
|
||||
import com.stardust.theme.ThemeColorManagerCompat;
|
||||
import com.stardust.util.MessageEvent;
|
||||
|
||||
@@ -165,6 +167,7 @@ public class HoverMenuService extends Service {
|
||||
tryInitViews();
|
||||
if (mWindowHoverMenu != null)
|
||||
mWindowHoverMenu.show();
|
||||
AccessibilityServiceTool.enableAccessibilityServiceByRootIfNeeded();
|
||||
return START_STICKY;
|
||||
}
|
||||
|
||||
|
||||
@@ -132,7 +132,7 @@ public class AccessibilityActionRecordNotification {
|
||||
|
||||
public static void startRecord(Context context) {
|
||||
if (AccessibilityWatchDogService.getInstance() == null) {
|
||||
Toast.makeText(context, R.string.text_need_enable_accessibility_service, Toast.LENGTH_SHORT).show();
|
||||
Toast.makeText(context, R.string.text_need_enable_accessibility_service_to_record, Toast.LENGTH_SHORT).show();
|
||||
return;
|
||||
}
|
||||
AccessibilityActionRecorder.getInstance().start();
|
||||
|
||||
@@ -57,4 +57,11 @@ public class AccessibilityServiceTool {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void enableAccessibilityServiceByRootIfNeeded() {
|
||||
if (AccessibilityWatchDogService.getInstance() == null)
|
||||
if (Pref.def().getBoolean(App.getApp().getString(R.string.key_enable_accessibility_service_by_root), false)) {
|
||||
AccessibilityServiceTool.enableAccessibilityServiceByRootAndWaitFor(AccessibilityWatchDogService.class, 3000);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,8 +50,11 @@ public class EditSideMenuFragment extends Fragment {
|
||||
return inflater.inflate(R.layout.fragment_edit_side_menu, container, false);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
protected void afterCreateView() {
|
||||
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
setUpUI();
|
||||
}
|
||||
|
||||
|
||||
@@ -32,7 +32,6 @@ import com.stardust.app.OnActivityResultDelegate;
|
||||
import com.stardust.scriptdroid.Pref;
|
||||
import com.stardust.scriptdroid.droid.script.file.ScriptFile;
|
||||
import com.stardust.scriptdroid.droid.script.file.ScriptFileList;
|
||||
import com.stardust.scriptdroid.droid.script.file.SharedPrefScriptFileList;
|
||||
import com.stardust.scriptdroid.external.notification.record.AccessibilityActionRecordNotification;
|
||||
import com.stardust.scriptdroid.record.inputevent.InputEventRecorder;
|
||||
import com.stardust.scriptdroid.record.inputevent.InputEventToJsRecorder;
|
||||
@@ -99,7 +98,7 @@ public class MainActivity extends BaseActivity implements FileChooserDialog.File
|
||||
private void goToAccessibilityPermissionSettingIfDisabled() {
|
||||
if (!AccessibilityServiceUtils.isAccessibilityServiceEnabled(this, AccessibilityWatchDogService.class)) {
|
||||
new NotRemindAgainDialog.Builder(this, "goToAccessibilityPermissionSettingIfDisabled")
|
||||
.title(R.string.text_alert)
|
||||
.title(R.string.text_need_to_enable_accessibility_service)
|
||||
.content(R.string.explain_accessibility_permission)
|
||||
.positiveText(R.string.text_go_to_setting)
|
||||
.negativeText(R.string.text_cancel)
|
||||
@@ -157,11 +156,11 @@ public class MainActivity extends BaseActivity implements FileChooserDialog.File
|
||||
private void setUpDrawerHeader() {
|
||||
TextView version = $(R.id.version);
|
||||
version.setText("Version " + BuildConfig.VERSION_NAME);
|
||||
String path = Pref.def().getString(Pref.KEY_DRAWER_HEADER_IMAGE_PATH, null);
|
||||
String path = Pref.getDrawerHeaderImagePath();
|
||||
if (path != null) {
|
||||
setDrawerHeaderImage(path);
|
||||
}
|
||||
path = Pref.def().getString(Pref.KEY_APP_BAR_IMAGE_PATH, null);
|
||||
path = Pref.getAppBarImagePath();
|
||||
if (path != null) {
|
||||
setAppBarImage(path);
|
||||
}
|
||||
@@ -236,7 +235,7 @@ public class MainActivity extends BaseActivity implements FileChooserDialog.File
|
||||
@ViewBinding.Click(R.id.record)
|
||||
private void startScriptRecord() {
|
||||
if (AccessibilityWatchDogService.getInstance() == null) {
|
||||
Snackbar.make(mDrawerLayout, R.string.text_need_enable_accessibility_service, Snackbar.LENGTH_SHORT).show();
|
||||
Snackbar.make(mDrawerLayout, R.string.text_need_enable_accessibility_service_to_record, Snackbar.LENGTH_SHORT).show();
|
||||
return;
|
||||
}
|
||||
AccessibilityActionRecordNotification.showOrUpdateNotification();
|
||||
@@ -270,7 +269,7 @@ public class MainActivity extends BaseActivity implements FileChooserDialog.File
|
||||
@Override
|
||||
public void onImageSelected(ImageSelector selector, String path) {
|
||||
setDrawerHeaderImage(path);
|
||||
Pref.def().edit().putString(Pref.KEY_DRAWER_HEADER_IMAGE_PATH, path).apply();
|
||||
Pref.setDrawerHeaderImagePath(path);
|
||||
mActivityResultIntermediary.removeDelegate(selector);
|
||||
}
|
||||
}).select();
|
||||
@@ -376,7 +375,7 @@ public class MainActivity extends BaseActivity implements FileChooserDialog.File
|
||||
new ImageSelector(this, mActivityResultIntermediary, new ImageSelector.ImageSelectorCallback() {
|
||||
@Override
|
||||
public void onImageSelected(ImageSelector selector, String path) {
|
||||
Pref.def().edit().putString(Pref.KEY_APP_BAR_IMAGE_PATH, path).apply();
|
||||
Pref.setAppBarImagePath(path);
|
||||
setAppBarImage(path);
|
||||
mActivityResultIntermediary.removeDelegate(selector);
|
||||
}
|
||||
|
||||
@@ -52,8 +52,9 @@ public class SlideMenuFragment extends Fragment {
|
||||
return inflater.inflate(R.layout.fragment_slide_menu, container, false);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void afterCreateView() {
|
||||
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
|
||||
setUpSwitchCompat();
|
||||
ViewBinder.bind(this);
|
||||
}
|
||||
@@ -124,9 +125,9 @@ public class SlideMenuFragment extends Fragment {
|
||||
private void stopAllRunningScripts() {
|
||||
int n = Droid.getInstance().stopAll();
|
||||
if (n > 0)
|
||||
Snackbar.make(getActivityContentView(), String.format(getString(R.string.text_already_stop_n_scripts), n), Snackbar.LENGTH_SHORT).show();
|
||||
Snackbar.make(getView(), String.format(getString(R.string.text_already_stop_n_scripts), n), Snackbar.LENGTH_SHORT).show();
|
||||
else
|
||||
Snackbar.make(getActivityContentView(), R.string.text_no_running_script, Snackbar.LENGTH_SHORT).show();
|
||||
Snackbar.make(getView(), R.string.text_no_running_script, Snackbar.LENGTH_SHORT).show();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -43,7 +43,8 @@ public class MyScriptListFragment extends Fragment implements BackPressedHandler
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void afterCreateView() {
|
||||
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
mScriptListRecyclerView = $(R.id.script_list);
|
||||
mScriptFileList = ScriptFileList.getImpl();
|
||||
mNoScriptHint = $(R.id.hint_no_script);
|
||||
@@ -60,15 +61,6 @@ public class MyScriptListFragment extends Fragment implements BackPressedHandler
|
||||
mScriptListRecyclerView.setScriptFileList(mScriptFileList);
|
||||
}
|
||||
|
||||
private void init() {
|
||||
setUpScriptList();
|
||||
}
|
||||
|
||||
private void setUpScriptList() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean onBackPressed() {
|
||||
if (mScriptListRecyclerView.getScriptFileOperationPopupMenu().isShowing()) {
|
||||
|
||||
@@ -73,9 +73,8 @@ public abstract class ScriptFileOperation {
|
||||
|
||||
@Override
|
||||
public void operate(RecyclerView recyclerView, ScriptFileList scriptFileList, int position) {
|
||||
Context context = recyclerView.getContext();
|
||||
ScriptFile scriptFile = scriptFileList.get(position);
|
||||
EditActivity.editFile(context, scriptFile.name, scriptFile.path);
|
||||
EditActivity.editFile(App.getApp(), scriptFile.name, scriptFile.path);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -87,10 +86,9 @@ public abstract class ScriptFileOperation {
|
||||
|
||||
@Override
|
||||
public void operate(RecyclerView recyclerView, ScriptFileList scriptFileList, int position) {
|
||||
Context context = recyclerView.getContext();
|
||||
ScriptFile scriptFile = scriptFileList.get(position);
|
||||
Uri uri = Uri.parse("file://" + scriptFile.path);
|
||||
context.startActivity(new Intent(Intent.ACTION_VIEW).setDataAndType(uri, "text/plain"));
|
||||
App.getApp().startActivity(new Intent(Intent.ACTION_VIEW).setDataAndType(uri, "text/plain"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -125,9 +123,8 @@ public abstract class ScriptFileOperation {
|
||||
|
||||
@Override
|
||||
public void operate(RecyclerView recyclerView, ScriptFileList scriptFileList, int position) {
|
||||
Context context = recyclerView.getContext();
|
||||
ScriptFile scriptFile = scriptFileList.get(position);
|
||||
new Shortcut(context).name(scriptFile.name)
|
||||
new Shortcut(App.getApp()).name(scriptFile.name)
|
||||
.targetClass(ShortcutActivity.class)
|
||||
.icon(R.drawable.ic_robot_green)
|
||||
.extras(new Intent().putExtra("path", scriptFile.path))
|
||||
|
||||
@@ -39,7 +39,8 @@ public class SampleScriptListFragment extends Fragment {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void afterCreateView() {
|
||||
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
mSampleScriptListRecyclerView = $(R.id.script_list);
|
||||
mSampleScriptListRecyclerView.setSamples(SampleFileManager.getInstance().getSamplesFromAssets(getContext().getAssets(), "sample"));
|
||||
mSampleScriptListRecyclerView.setOnItemLongClickListener(new SampleScriptListRecyclerView.OnItemLongClickListener() {
|
||||
|
||||
@@ -110,9 +110,8 @@ public class SettingsActivity extends BaseActivity {
|
||||
.entry(getString(R.string.text_reset_background), new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
Pref.def().edit().putString(Pref.KEY_APP_BAR_IMAGE_PATH, null)
|
||||
.putString(Pref.KEY_DRAWER_HEADER_IMAGE_PATH, null)
|
||||
.apply();
|
||||
Pref.setAppBarImagePath(null);
|
||||
Pref.setDrawerHeaderImagePath(null);
|
||||
Toast.makeText(getActivity(), R.string.text_restart_app_to_apply, Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user