2017-11-22 8 views
0

私が達成しようとしているのは、URLをブラウザ、ノート、アプリ、またはメッセンジャーでクリックすると自動的にアクティビティを開くことです。 のAndroidManifest.xmlでhttp://testsite.com/code/AB1234独自のインテントフィルタを設定することはできますか?

、私は活動のためのインテントフィルタを設定している:HomeActivityで

<activity android:name=".HomeActivity"> 
    <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:host="testsite.com" 
      android:pathPrefix="/code" 
      android:scheme="http" /> 

    </intent-filter> 
</activity> 

、単にURLからコードを取得し、トーストの上にそれを示す

は、だから私は、このURLの形式を持っています:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_home); 

    String code = getIntent().getData().getLastPathSegment(); 
    Toast.makeText(this, code, Toast.LENGTH_LONG).show(); 

} 

私がリンクをクリックすると、システムは自分のアプリケーションとブラウザアプリケーションをアプリケーションチューザーに表示しています。私はこのURLがブラウザでも処理できることを知っています。可能であれば、自分のインテントフィルターに優先順位を付ける方法を知りたいです。

私のアプリを自動的に開くことはできますか?はいの場合はどうすればいいですか?インテントフィルタをどのように変更する必要がありますか?

+0

このリンクは役に立ちます。 Android 6.0以降を実行している端末のURLからアプリを直接開くことはできますが、そのユーザーの下には常にポップアップが表示されます。 https://developer.android.com/training/app-links/deep-linking.html – jitinsharma

+0

あなたは 'http:// something'の代わりに' myapp:// something'のようなカスタムプロトコルを定義しようとすることができます。この種のURLはブラウザでは処理されず、デフォルトでアプリが使用されます。しかし、あなたのアプリケーションがインストールされていないそのようなURLをクリックすると、ブラウザに*ページが見つかりません*になることに注意してください –

答えて

0

リンクを制御できる場合は、目的に合ったものを達成する最も簡単な方法は、独自のスキームを設定することです。

<data android:host="testsite.com" 
     android:pathPrefix="/code" 
     android:scheme="myapp" /> 
関連する問題