2017-08-13 5 views
0

私はウェブブラウジング用の素晴らしいアプリを作りました。 私のアプリを起動すると、アプリ内でリンクが開かれ、すべてがスムーズに進みます。 しかし、アプリの外から(例えばテキストメッセージで)リンクをクリックすると、Androidは自分のリンクを開くブラウザを選択するように求めています。 私のアプリケーションが外部のリンクを開いてそれらを処理できるようにしようとしています。私のブラウザアプリをデフォルトのブラウザとして選ぶには?

ありがとうございました!

編集:私はそれを動作させるための方法を発見した

を解決しました。ここで は私のAndroidManifest.xml

<activity 
     android:name=".MainActivity" 

     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
     <intent-filter> 
      <action android:name="android.intent.action.VIEW" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <category android:name="android.intent.category.BROWSABLE" /> 
      <data android:scheme="http" /> 
      <data android:scheme="https" /> 
     </intent-filter> 
    </activity> 

そして、ここでのスニペットは、私が取得し、リンクで私のアプリを開始した意図を使用する方法である:

MainActivity.java

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    //... 

    Uri startIntentData = getIntent().getData(); 
    if(startIntentData!=null) { 
     String intentUrl = startIntentData.toString(); 
     if(intentUrl.contains("http://")||intentUrl.contains("https://")) { // checking if the intent's data was meant to be a url 
      addTab(intentUrl); // a method that handle opening urls by calling webView.loadUrl(String url) 
     } 
    } 

最も安全か最も効率的な方法かどうかはわかりませんが、少なくとも機能します。

答えて

0

私は私のアプリ私のデフォルトのブラウザ

あなたがないようにする方法を知りません。 ユーザーは、アプリをデフォルトのブラウザにすることができます。 <activity>を適切な<intent-filter>に設定し、サポートするすべてのスキームとMIMEタイプについてACTION_VIEWIntentsを確認してください。 Android、そしてユーザーはそこからそれを受け取ります。

+0

私のアプリでデフォルトのブラウザであることを強制するのではなく、自分のアプリで開くリンクを選択するだけです。これは明白な問題ですか?私に例を挙げてもらえますか? – Gueg

+0

@Gueg:あなたのアプリが何を処理できるかわかりません。私はあなたに何を含めるかを正確に伝えることはできません。 ''については、[documentation](https://developer.android.com/guide/components/intents-filters.html#ExampleFilters)とAndroidアプリ開発の書籍とコースで説明しています。既存のオープンソースのWebブラウザと、[Lightning](https://github.com/anthonycr/Lightning-Browser/blob/dev/app/src/main/)など、それらが使用する ''要素についても参照してください。 AndroidManifest.xml)または[AOSPブラウザ](https://android.googlesource.com/platform/packages/apps/Browser2/+/master/AndroidManifest.xml)をクリックします。 – CommonsWare

+0

ご協力いただきありがとうございます、私は最終的にそれを動作させる方法を発見しました。私はあなたのリンクが本当に私を理解するのを助けたので、あなたの答えを受け入れたものとしてマークします。 – Gueg

関連する問題