diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml
index 9cd35bea..ca53db84 100644
--- a/src/main/AndroidManifest.xml
+++ b/src/main/AndroidManifest.xml
@@ -8,8 +8,6 @@
-
-
-
-
-
diff --git a/src/main/res/values-ja/strings.xml b/src/main/res/values-ja/strings.xml
index dc8b0c07..2ac3360a 100644
--- a/src/main/res/values-ja/strings.xml
+++ b/src/main/res/values-ja/strings.xml
@@ -87,7 +87,6 @@
シャドーソックスにプロファイルを追加しますか
QRコードを読み取る
手動でセットアップ
- QRコードを読み取るにはカメラの使用権限が必要です。
- すべて
diff --git a/src/main/res/values-ru/strings.xml b/src/main/res/values-ru/strings.xml
index 9ff27f62..1c63b9b5 100644
--- a/src/main/res/values-ru/strings.xml
+++ b/src/main/res/values-ru/strings.xml
@@ -108,7 +108,6 @@
Добавить этот Профиль Shadowsocks?
Сканировать QR код
Настройка вручную
- Разрешение камеры требуется для сканирования QR код.
Копировать URL
- Удалён
diff --git a/src/main/res/values-zh-rCN/strings.xml b/src/main/res/values-zh-rCN/strings.xml
index e61589e9..5047b896 100644
--- a/src/main/res/values-zh-rCN/strings.xml
+++ b/src/main/res/values-zh-rCN/strings.xml
@@ -98,7 +98,7 @@
为影梭添加此配置文件?
扫描二维码
手动设置
- 扫描二维码需要相机权限。
+ 请安装任意兼容 ZXing 的二维码扫描应用。
- 全局
diff --git a/src/main/res/values-zh-rTW/strings.xml b/src/main/res/values-zh-rTW/strings.xml
index 0a25a95e..9d97cb2c 100644
--- a/src/main/res/values-zh-rTW/strings.xml
+++ b/src/main/res/values-zh-rTW/strings.xml
@@ -99,7 +99,7 @@
為 Shadowsocks 新增此設定檔?
掃描 QR 碼
手動設定
- 掃描 QR 碼需要相機權限。
+ 請安裝任何兼容 ZXing 的 QR 碼掃描應用程式。
- 全域
diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml
index 5757db9b..3688f22e 100644
--- a/src/main/res/values/strings.xml
+++ b/src/main/res/values/strings.xml
@@ -127,7 +127,7 @@
Add this Shadowsocks Profile?
Scan QR code
Manual Settings
- Camera permission is required for scanning QR code.
+ Please install any ZXing-compliant QR code scanning app.
Copy URL
- Removed
diff --git a/src/main/scala/com/github/shadowsocks/ProfilesFragment.scala b/src/main/scala/com/github/shadowsocks/ProfilesFragment.scala
index 5bf0b10c..26ef47ae 100644
--- a/src/main/scala/com/github/shadowsocks/ProfilesFragment.scala
+++ b/src/main/scala/com/github/shadowsocks/ProfilesFragment.scala
@@ -22,7 +22,9 @@ package com.github.shadowsocks
import java.util.GregorianCalendar
+import android.app.Activity
import android.content._
+import android.net.Uri
import android.os.Bundle
import android.support.v7.widget.RecyclerView.ViewHolder
import android.support.v7.widget._
@@ -306,18 +308,23 @@ final class ProfilesFragment extends ToolbarFragment with Toolbar.OnMenuItemClic
}
override def onActivityResult(requestCode: Int, resultCode: Int, data: Intent): Unit = requestCode match {
- case REQUEST_SCAN_QR_CODE =>
+ case REQUEST_SCAN_QR_CODE => if (resultCode == Activity.RESULT_OK) {
val contents = data.getStringExtra("SCAN_RESULT")
if (!TextUtils.isEmpty(contents)) Parser.findAll(contents).foreach(app.profileManager.createProfile)
+ }
case _ => super.onActivityResult(resultCode, resultCode, data)
}
def onMenuItemClick(item: MenuItem): Boolean = item.getItemId match {
case R.id.action_scan_qr_code =>
- startActivityForResult(new Intent("com.google.zxing.client.android.SCAN")
+ try startActivityForResult(new Intent("com.google.zxing.client.android.SCAN")
.addCategory(Intent.CATEGORY_DEFAULT)
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_DOCUMENT),
- REQUEST_SCAN_QR_CODE)
+ REQUEST_SCAN_QR_CODE) catch {
+ case _: ActivityNotFoundException =>
+ Toast.makeText(getActivity, R.string.add_profile_scanner_not_installed, Toast.LENGTH_LONG).show()
+ startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=tw.com.quickmark")))
+ }
true
case R.id.action_import =>
if (clipboard.hasPrimaryClip) {