Ну, я нашел комментарий полезным и придумал это, чтобы решить мою вторую проблему.
val isAppInstalled = appInstalledOrNot("com.microsoft.office.officelens")
if (isAppInstalled)
{
//This intent will help you to launch if the package is already installed
Toast.makeText(this@ScrollingActivity, "Its toast at if!", Toast.LENGTH_SHORT).show()
val LaunchIntent = getPackageManager().getLaunchIntentForPackage("com.microsoft.office.officelens")
startActivityForResult(LaunchIntent, IMAGE_PICK_CODE)
}
else
{
Toast.makeText(this@ScrollingActivity, "else executed!", Toast.LENGTH_SHORT).show()
val intent = Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=com.microsoft.office.officelens"))
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
startActivityForResult(intent, IMAGE_PICK_CODE)
}
Эта функция позволяет вам проверить, установлено приложение или нет
private fun appInstalledOrNot(uri:String):Boolean {
val pm = getPackageManager()
try
{
pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES)
return true
}
catch (e:PackageManager.NameNotFoundException) {}
return false
}
Сохранить последний рабочий каталог в ~ ./. bash_logout в скрытый файл:
pwd > ~/.lastdirectory
Прочитайте этот файл в ~ / .bashrc с помощью
[ -s ~/.lastdirectory ] && cd `cat ~/.lastdirectory`
Поместите его в свой ~ / .bashrc
(вероятно, в конце):
cd "$(<~/.storepwd)"
Затем у вас есть выбор из следующего:
Либо поместите это в ~ / .bash_logout
(не запомнит каталог для интерактивных оболочек без входа в систему) :
printf %s "$PWD" > ~/.storepwd
Или используйте ловушку
на EXIT
, вставьте это в ~ / .bashrc
(ловушки могут быть перезаписаны легко / случайно):
trap 'printf %s "$PWD" > ~/.storepwd' EXIT
Или используйте PROMPT_COMMAND
, поместите этот ~ / .bashrc
(вероятно, самый надежный способ):
PROMPT_COMMAND+='; printf %s "$PWD" > ~/.storepwd'
Также убедитесь, что ваш ~ / .profile
или ~ / .bash_profile
исходные тексты вашего ~ / .bashrc
,в противном случае путь не будет восстановлен при запуске оболочки входа в систему.
См. http://mywiki.wooledge.org/DotFiles для получения информации о том, как вы должны использовать ваши точечные файлы.
это не константа, если вы хотите переопределить ее;) попробуйте виртуальное свойство только для чтения (или защищенный установщик) ...
Свойство только для чтения
public class MyClass {
public virtual string MyConst { get {return "SOMETHING"; }}
}
...
public class MyDerived : MyClass {
public override string MyConst { get { return "SOMETHINGELSE"; }}
}
Защищено Сеттер
public class MyClass {
public string MyConst { get; protected set; }
public MyClass() {
MyConst = "SOMETHING";
}
}
public class MyDerived : MyClass {
public MyDerived() {
MyConst = "SOMETHING ELSE";
}
}
- 121 --- 1848132-- Вы также должны быть осторожны со всей этой концепцией. Например, если вам удастся запустить код, когда вы этого не ожидаете, это может привести к путанице в любом количестве вещей.
Например, если вам нужно запустить скрипт оболочки, который изменил текущий рабочий каталог, а затем во время выхода удалось сохранить CWD, и вы можете оказаться в следующей запускающейся оболочке в каталоге, который вы не ожидаете.
Еще один популярный, по крайней мере для меня на $ work, - это когда скрипт запускается, когда пользователь root запускает скрипт, все автоматически (т.е. программно). Если вы делаете этот трюк CWD для своего собственного пользователя, это нормально, но это может в основном испортить системные инструменты, которые ожидают, что "su - youruser -c ls" вернет файлы в вашем домашнем каталоге. (Хорошо, называть «ls», поскольку ваш пользователь - глупая идея, но есть вещи, в которых ваш пользователь может иметь лучшую среду для запуска чего-либо, чем делает root - например, на монтируемых NFS, у которых есть сжатый root.)
ключевой момент здесь состоит в том, чтобы определить, используете ли вы интерактивную оболочку или нет, и, если нет, не восстанавливайте и не сохраняйте CWD . IIRC, $ - имеет «i» для интерактивных оболочек. Используйте его для установки ловушки и для восстановления CWD.
Лично я просто установил псевдоним:
alias go='. go.sh'
, а затем go.sh просто проверяет свой параметр, для какого каталога я хочу перейти. Например, «go myproj» будет cd ~ / svn / myproj, а «go bigdisk» будет cd / mnt / bigdisk. И, для более сложных случаев, он может принимать больше параметров, например, "go myproj lib" будет просто "cd ~ / svn / myproj / myproj / lib" или что угодно. Нет автоматического сохранения, но нет и побочных эффектов.
Вы можете записывать текущий каталог (pwd) в какой-то файл каждый раз при изменении dir (cd). При запуске терминала скрипт запуска bash должен искать в этом файле «last dir». Если что-то найдено - перейдите к нему.
Посмотрите на .bashrc и, возможно, сможете изменить его во время выхода из системы, чтобы он содержал интересующий вас каталог.
Скорее всего, вы захотите сохранить текущий каталог в файл при выходе из оболочки. Существует несколько способов определения выхода из оболочки:
Вы можете сохранять CWD при каждом приглашении или каждый раз, когда запускаете «cd», но это немного излишне.
Чтобы восстановить CWD при следующем запуске оболочки, достаточно просто запустить 'cd' для содержимого файла сохранения, если он существует.
Вы можете подумать о том, что должно произойти, если у вас одновременно работают несколько оболочек. Какой из них вы хотите сохранить CWD? Должны ли все новые оболочки, которые начинают использовать этот CWD? Или только следующая оболочка, которая запускается?