diff --git a/.idea/dictionaries/tateisu.xml b/.idea/dictionaries/tateisu.xml index f6d65232..72bc1900 100644 --- a/.idea/dictionaries/tateisu.xml +++ b/.idea/dictionaries/tateisu.xml @@ -61,6 +61,7 @@ hhmm hohoemi hostdon + huawei idat idempotency ietf diff --git a/app/src/main/java/jp/juggler/subwaytooter/ActMain.kt b/app/src/main/java/jp/juggler/subwaytooter/ActMain.kt index 28450937..e30169ad 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/ActMain.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/ActMain.kt @@ -1099,7 +1099,7 @@ class ActMain : AsyncActivity(), Column.Callback, View.OnClickListener, } if(resultCode == Activity.RESULT_OK && data != null) { - startAccessTokenUpdate(data) + App1.openBrowser(this, data.data) } else if(resultCode == ActAccountSetting.RESULT_INPUT_ACCESS_TOKEN && data != null) { val db_id = data.getLongExtra(ActAccountSetting.EXTRA_DB_ID, - 1L) checkAccessToken2(db_id) @@ -1707,10 +1707,6 @@ class ActMain : AsyncActivity(), Column.Callback, View.OnClickListener, } - fun startAccessTokenUpdate(data : Intent) { - App1.openBrowser(this, data.data) - } - // ActOAuthCallbackで受け取ったUriを処理する private fun handleIntentUri(uri : Uri) { diff --git a/app/src/main/java/jp/juggler/subwaytooter/App1.kt b/app/src/main/java/jp/juggler/subwaytooter/App1.kt index d6f6af33..3222ee49 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/App1.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/App1.kt @@ -8,6 +8,7 @@ import android.content.Context import android.content.Intent import android.content.SharedPreferences import android.content.pm.PackageManager +import android.content.pm.ResolveInfo import android.content.res.ColorStateList import android.database.sqlite.SQLiteDatabase import android.database.sqlite.SQLiteOpenHelper @@ -620,9 +621,14 @@ class App1 : Application() { val pm = activity.packageManager !! val myName = activity.packageName + val filter : (ResolveInfo)->Boolean ={ + it.activityInfo.packageName != myName && + it.activityInfo.exported && + -1 == it.activityInfo.packageName.indexOf("com.huawei.android.internal") + } + // resolveActivity がこのアプリ以外のActivityを返すなら、それがベストなんだろう // ただしAndroid M以降はMATCH_DEFAULT_ONLYだと「常時」が設定されてないとnullを返す - val ri = pm.resolveActivity( intent, if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { @@ -630,7 +636,7 @@ class App1 : Application() { } else { PackageManager.MATCH_DEFAULT_ONLY } - )?.takeIf { it.activityInfo.packageName != myName } + )?.takeIf(filter) if(ri != null) { intent.setClassName(ri.activityInfo.packageName, ri.activityInfo.name) @@ -642,7 +648,7 @@ class App1 : Application() { activity, intent, autoSelect = true, - filter = { it.activityInfo.packageName != myName } + filter = filter ) { try { intent.component = it.cn() diff --git a/app/src/main/java/jp/juggler/subwaytooter/action/Action_Account.kt b/app/src/main/java/jp/juggler/subwaytooter/action/Action_Account.kt index c5d69f82..0282e85a 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/action/Action_Account.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/action/Action_Account.kt @@ -57,9 +57,7 @@ object Action_Account { when(action) { LoginForm.Action.Existing -> if(data is String) { // ブラウザ用URLが生成された - val intent = Intent() - intent.data = data.toUri() - activity.startAccessTokenUpdate(intent) + App1.openBrowser(activity, data.toUri()) dialog.dismissSafe() return }