+1
-5
@@ -1,10 +1,6 @@
|
||||
resolvers += Resolver.url("scalasbt releases", new URL("http://scalasbt.artifactoryonline.com/scalasbt/sbt-plugin-snapshots"))(Resolver.ivyStylePatterns)
|
||||
|
||||
addSbtPlugin("com.hanhuy.sbt" % "android-sdk-plugin" % "1.5.19")
|
||||
|
||||
resolvers += "Sonatype snapshots" at "https://oss.sonatype.org/content/repositories/snapshots/"
|
||||
|
||||
addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.7.0-SNAPSHOT")
|
||||
addSbtPlugin("com.hanhuy.sbt" % "android-sdk-plugin" % "1.5.20")
|
||||
|
||||
resolvers += Resolver.url("rtimush/sbt-plugin-snapshots", new URL("https://dl.bintray.com/rtimush/sbt-plugin-snapshots/"))(Resolver.ivyStylePatterns)
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.github.shadowsocks"
|
||||
xmlns:tools="http://schemas.android.com/tools" package="com.github.shadowsocks"
|
||||
android:versionCode="134"
|
||||
android:versionName="2.10.1">
|
||||
|
||||
@@ -92,7 +92,7 @@
|
||||
android:launchMode="singleInstance"
|
||||
android:excludeFromRecents="true"
|
||||
android:taskAffinity=""
|
||||
android:theme="@style/PopupTheme.QuickSwitch">
|
||||
android:theme="@style/PopupTheme.QuickSwitch">
|
||||
<intent-filter>
|
||||
<action android:name="com.github.shadowsocks.QUICK_SWITCH" />
|
||||
<category android:name="android.intent.category.DEFAULT"/>
|
||||
@@ -128,7 +128,7 @@
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
|
||||
<receiver android:name=".TaskerReceiver">
|
||||
<receiver android:name=".TaskerReceiver" tools:ignore="ExportedReceiver">
|
||||
<intent-filter>
|
||||
<action android:name="com.twofortyfouram.locale.intent.action.FIRE_SETTING"/>
|
||||
</intent-filter>
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--Generated by crowdin.net-->
|
||||
<resources>
|
||||
<string name="app_name">影梭</string>
|
||||
<string name="global_cat">全局设置</string>
|
||||
@@ -61,9 +60,9 @@
|
||||
<string name="flush_dnscache_no_root">在没有 ROOT 权限的情况下无法刷新 DNS 缓存</string>
|
||||
<string name="flushing">刷新中……</string>
|
||||
<string name="share">分享</string>
|
||||
<string name="share_message">扫描二维码或者使用 NFC(Android Beam)</string>
|
||||
<string name="share_message">扫描二维码或使用 Android Beam (NFC)</string>
|
||||
<string name="share_message_without_nfc">扫描二维码</string>
|
||||
<string name="share_message_nfc_disabled">扫描二维码,NFC(Android Beam)被禁用</string>
|
||||
<string name="share_message_nfc_disabled">扫描二维码\nAndroid Beam 被禁用</string>
|
||||
<string name="turn_on_nfc">打开 NFC & Android Beam</string>
|
||||
<string name="add_profile">添加配置文件</string>
|
||||
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--Generated by crowdin.net-->
|
||||
<resources>
|
||||
|
||||
<string name="app_name">Shadowsocks</string>
|
||||
<string name="screen_name" translatable="false">Shadowsocks</string>
|
||||
<string name="global_cat">全域設定</string>
|
||||
<string name="misc_cat">其他</string>
|
||||
<string name="proxy_cat">伺服器設定</string>
|
||||
@@ -63,10 +61,10 @@
|
||||
<string name="flush_dnscache_no_root">在無 ROOT 權限時清除 DNS 快取無法進行</string>
|
||||
<string name="flushing">清除中……</string>
|
||||
<string name="share">分享</string>
|
||||
<string name="share_message">掃描 QR 碼或者使用 NFC (Android Beam)</string>
|
||||
|
||||
<string name="share_message">掃描 QR 碼或者使用 Android Beam (NFC)</string>
|
||||
<string name="share_message_without_nfc">掃描 QR 碼</string>
|
||||
<string name="share_message_nfc_disabled">掃描 QR 碼,NFC (Android Beam) 被停用</string>
|
||||
<string name="share_message_nfc_disabled">掃描 QR 碼\nAndroid Beam 被停用</string>
|
||||
<string name="turn_on_nfc">啟用 NFC & Android Beam</string>
|
||||
<string name="add_profile">新增設定檔</string>
|
||||
|
||||
<string name="nat">NAT 模式 (已過時)</string>
|
||||
|
||||
@@ -92,9 +92,9 @@
|
||||
<string name="about">About</string>
|
||||
<string name="about_title">Shadowsocks %s</string>
|
||||
<string name="share">Share</string>
|
||||
<string name="share_message">Scan QRCode or Use NFC (Android Beam)</string>
|
||||
<string name="share_message_without_nfc">Scan QRCode</string>
|
||||
<string name="share_message_nfc_disabled">Scan QRCode, NFC (Android Beam) is disabled</string>
|
||||
<string name="share_message">Scan QR code or use Android Beam (NFC)</string>
|
||||
<string name="share_message_without_nfc">Scan QR code</string>
|
||||
<string name="share_message_nfc_disabled">Scan QR code\nAndroid Beam is disabled</string>
|
||||
<string name="turn_on_nfc">Turn on NFC & Android Beam</string>
|
||||
<string name="flush_dnscache">Flush DNS cache</string>
|
||||
<string name="flush_dnscache_summary">Only useful in NAT mode</string>
|
||||
|
||||
@@ -5,9 +5,8 @@ import java.nio.charset.Charset
|
||||
import android.content._
|
||||
import android.nfc.NfcAdapter.CreateNdefMessageCallback
|
||||
import android.nfc.{NdefMessage, NdefRecord, NfcAdapter, NfcEvent}
|
||||
import android.os.{Build, Bundle, Handler}
|
||||
import android.os.{Bundle, Handler}
|
||||
import android.provider.Settings
|
||||
import android.support.v4.app.{NavUtils, TaskStackBuilder}
|
||||
import android.support.v7.app.{AlertDialog, AppCompatActivity}
|
||||
import android.support.v7.widget.RecyclerView.ViewHolder
|
||||
import android.support.v7.widget.Toolbar.OnMenuItemClickListener
|
||||
@@ -38,7 +37,7 @@ class ProfileManagerActivity extends AppCompatActivity with OnMenuItemClickListe
|
||||
val shareBtn = itemView.findViewById(R.id.share)
|
||||
shareBtn.setOnClickListener(_ => {
|
||||
val url = item.toString
|
||||
if (nfcBeamEnable) {
|
||||
if (isNfcBeamEnabled) {
|
||||
nfcAdapter.setNdefPushMessageCallback(ProfileManagerActivity.this,ProfileManagerActivity.this)
|
||||
nfcShareItem = url.getBytes(Charset.forName("UTF-8"))
|
||||
}
|
||||
@@ -57,23 +56,15 @@ class ProfileManagerActivity extends AppCompatActivity with OnMenuItemClickListe
|
||||
.setView(image)
|
||||
.setTitle(R.string.share)
|
||||
.create()
|
||||
if (!nfcAvailable){
|
||||
dialog.setMessage(getString(R.string.share_message_without_nfc))
|
||||
if (!isNfcAvailable) dialog.setMessage(getString(R.string.share_message_without_nfc))
|
||||
else if (!isNfcBeamEnabled) {
|
||||
dialog.setMessage(getString(R.string.share_message_nfc_disabled))
|
||||
dialog.setButton(DialogInterface.BUTTON_NEUTRAL, getString(R.string.turn_on_nfc),
|
||||
((_, _) => startActivity(new Intent(Settings.ACTION_NFC_SETTINGS))): DialogInterface.OnClickListener)
|
||||
} else {
|
||||
if (!nfcBeamEnable) {
|
||||
dialog.setMessage(getString(R.string.share_message_nfc_disabled))
|
||||
dialog.setButton(DialogInterface.BUTTON_NEUTRAL, getString(R.string.turn_on_nfc), ((_, _) =>
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
|
||||
startActivity(new Intent(Settings.ACTION_NFC_SETTINGS))
|
||||
} else {
|
||||
startActivity(new Intent(Settings.ACTION_WIRELESS_SETTINGS))
|
||||
}
|
||||
): DialogInterface.OnClickListener)
|
||||
} else {
|
||||
dialog.setMessage(getString(R.string.share_message))
|
||||
dialog.setOnDismissListener(_ =>
|
||||
nfcAdapter.setNdefPushMessageCallback(null, ProfileManagerActivity.this))
|
||||
}
|
||||
dialog.setMessage(getString(R.string.share_message))
|
||||
dialog.setOnDismissListener(_ =>
|
||||
nfcAdapter.setNdefPushMessageCallback(null, ProfileManagerActivity.this))
|
||||
}
|
||||
dialog.show()
|
||||
})
|
||||
@@ -111,12 +102,9 @@ class ProfileManagerActivity extends AppCompatActivity with OnMenuItemClickListe
|
||||
}
|
||||
}
|
||||
|
||||
def onClick(v: View) = {
|
||||
def onClick(v: View) {
|
||||
ShadowsocksApplication.switchProfile(item.id)
|
||||
finish
|
||||
if (isLauncherFromShareIntent){
|
||||
TaskStackBuilder.create(ProfileManagerActivity.this).addNextIntentWithParentStack(NavUtils.getParentActivityIntent(ProfileManagerActivity.this)).startActivities()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -181,11 +169,9 @@ class ProfileManagerActivity extends AppCompatActivity with OnMenuItemClickListe
|
||||
|
||||
private var nfcAdapter : NfcAdapter = _
|
||||
private var nfcShareItem: Array[Byte] = _
|
||||
private var nfcAvailable = false
|
||||
private var nfcEnable = false
|
||||
private var nfcBeamEnable = false
|
||||
|
||||
private var isLauncherFromShareIntent = false
|
||||
private var isNfcAvailable: Boolean = _
|
||||
private var isNfcEnabled: Boolean = _
|
||||
private var isNfcBeamEnabled: Boolean = _
|
||||
|
||||
override def onCreate(savedInstanceState: Bundle) {
|
||||
super.onCreate(savedInstanceState)
|
||||
@@ -235,46 +221,40 @@ class ProfileManagerActivity extends AppCompatActivity with OnMenuItemClickListe
|
||||
new AlertDialog.Builder(this).setTitle(R.string.profile_manager_dialog)
|
||||
.setMessage(R.string.profile_manager_dialog_content).setPositiveButton(R.string.gotcha, null).create.show
|
||||
}
|
||||
|
||||
val intent = getIntent
|
||||
if (intent != null) handleShareIntent(intent)
|
||||
}
|
||||
|
||||
|
||||
override def onResume() {
|
||||
super.onResume()
|
||||
isLauncherFromShareIntent = false
|
||||
handledShareIntent()
|
||||
updateNFCState()
|
||||
updateNfcState()
|
||||
}
|
||||
|
||||
override def onNewIntent(intent: Intent): Unit ={
|
||||
super.onNewIntent(intent)
|
||||
setIntent(intent)
|
||||
handleShareIntent(intent)
|
||||
}
|
||||
|
||||
def updateNFCState(): Unit = {
|
||||
def updateNfcState() {
|
||||
isNfcAvailable = false
|
||||
isNfcEnabled = false
|
||||
isNfcBeamEnabled = false
|
||||
nfcAdapter = NfcAdapter.getDefaultAdapter(this)
|
||||
if (nfcAdapter != null){
|
||||
nfcAvailable = true
|
||||
if (nfcAdapter != null) {
|
||||
isNfcAvailable = true
|
||||
if (nfcAdapter.isEnabled) {
|
||||
nfcEnable = true
|
||||
isNfcEnabled = true
|
||||
if (nfcAdapter.isNdefPushEnabled) {
|
||||
nfcBeamEnable = true
|
||||
isNfcBeamEnabled = true
|
||||
nfcAdapter.setNdefPushMessageCallback(null, ProfileManagerActivity.this)
|
||||
} else {
|
||||
nfcBeamEnable = false
|
||||
}
|
||||
} else{
|
||||
nfcEnable = false
|
||||
nfcBeamEnable = false
|
||||
}
|
||||
} else {
|
||||
nfcAvailable = false
|
||||
nfcEnable = false
|
||||
nfcBeamEnable = false
|
||||
}
|
||||
}
|
||||
|
||||
def handledShareIntent() {
|
||||
val intent = getIntent()
|
||||
def handleShareIntent(intent: Intent) {
|
||||
val sharedStr = intent.getAction match {
|
||||
case Intent.ACTION_VIEW => intent.getData.toString
|
||||
case NfcAdapter.ACTION_NDEF_DISCOVERED =>
|
||||
@@ -298,7 +278,6 @@ class ProfileManagerActivity extends AppCompatActivity with OnMenuItemClickListe
|
||||
.setMessage(profiles.mkString("\n"))
|
||||
.create()
|
||||
dialog.show()
|
||||
isLauncherFromShareIntent = true
|
||||
}
|
||||
|
||||
override def onStart() {
|
||||
|
||||
Reference in New Issue
Block a user