3

まず最初にAndroidで初心者を認める必要がありますが、アンドロイドでは別のアプリケーションでプライベートアクティビティを開始できません。 intent-filterでandroid:exported = trueに設定されていないか、implicitの呼び出し用に作成されている場合を除きます。 でも、アプリケーションを使用してプライベートアクティビティを開始することができます。ブラウザ(特にアンドロイド)では、Intent URLsを使ってブラウザのプライベートアクティビティを開始できます。インテントURLを使用してAndroidブラウザのプライベートアクティビティを開始する

私はOpera Mobileでいくつかのアクティビティを見つけましたが、問題はちょうど意図URLを使ってそれらを実行できないので、私は何が間違っているのか分かりません。

intent:#Intent;component=com.opera.browser/com.opera.android.OperaMainActivity;end 

または

intent:#Intent;component=com.opera.browser/com.opera.android.OperaStartActivity;end 

が、これらのどれも起動しません:オペラでの活動が OperaMainActivityと呼ばれる(または別のと呼ばれる OperaStartActivity)イムは、このようにそれらを起動しようとしているがあり、たとえば

呼び出されたアクティビティ。

私はまだだけでなくプライベートでAdMarvelActivity始めることができますが:

"intent:#Intent;S.url=https://google.com;component=com.opera.browser/com.admarvel.android.ads.AdMarvelActivity;end"; 

がここAndroidManifestで定義された方法OperaMain活動です:

<activity ns0:label="@string/app_name_title" ns0:name="com.opera.android.OperaMainActivity" ns0:launchMode="singleTask" ns0:configChanges="keyboard|keyboardHidden|orientation|screenSize" ns0:windowSoftInputMode="10" /> 

をし、そのためのintent-filterはありません。

、これはAdMarvelActivityAndroidManifestで定義された方法です:

<activity ns0:theme="@*ns0:style/Theme.NoTitleBar.Fullscreen" ns0:name="com.admarvel.android.ads.AdMarvelActivity" ns0:process=":helper" ns0:configChanges="keyboard|keyboardHidden|orientation" /> 

私は、これら二つの間には大きな違いは見られません。私は何を間違えているのですか?

+0

これはお探しですか? https://stackoverflow.com/questions/3004515/android-sending-an-intent-to-browser-to-open-specific-url – Shmuel

+0

番号その開始ブラウザは、別のアプリケーションから呼び出すことができる公的活動です。私はもちろん、インテントURLスキームを使用して、ブラウザ自体からプライベートアクティビティを呼び出すexplicityを探しています –

答えて

1

Vulnerable Handling of Intent URL Schemeは長い間知られており、一般的なブラウザ(Chrome、Operaなど)のほとんどでこのバグが修正されています。しかし、代わりのアンドロイドブラウザにはまだこの脆弱性が存在します。

Opera Mobileの最新バージョン(v37)で攻撃を試みましたが、うまくいきませんでした。古いapkで実行している必要があります。

この攻撃を別のブラウザでテストする場合は、次のトークを参照してください。All Your Browsers Belong To Us; Dolphin BrowserとMercury Browserに対するこの攻撃をデモンストレーションします。

+0

あなたの答えに感謝、私は攻撃について知っています。私の質問は少し違う。私が私的な活動を始めることができるかどうか聞いています。なぜ、質問に記載されている活動を始められないのですか?私はそれらを実行する方法を知りたい。なぜ私はAdMarvelActivityを起動できれば、他の人を起動できないのですか?私は意図のURLを間違って書いていますか? –

+1

「AdMarvelActivity」を実行できる場合、他のものも実行可能でなければならないことに同意します。アクティビティを開始するために必須のいくつかのインテントエクストラが不足している可能性があります。すべてのインテントを傍受またはログするには、 'adb logcat | fgrep -i intent'を実行して、意図が発生または受信されているかどうかを確認します。 Opera Mobileのどのバージョンでこれを試していますか?あなたが試したapkとIntentのURLを共有してください。 –

+0

adbコマンドは実際に監視に適しています。私は問題がいくつかのバージョンのブラウザ(特に新しいもの)でインテントURLでコンポーネントをフィルタリングしていることがわかりました。コードに気づいた場合は、parseURIの直後にintent.setComponent(null)を設定します。私たちはコンポーネントを使ってプライベートアクティビティを呼び出すことはできません。それらを開始する他の方法はありますか? –

関連する問題