2017-04-21 3 views
0

における意思-フィルタにもかかわらず、私はマニフェスト内のコードを開いているアクティビティ次ていません。ログインボタンをクリックすると、ブラウザが開き、Webサイトの認証ページがロードされます(この場合Reddit)。そのページの「許可」ブラウザをクリックした後 がWebブラウザリダイレクトは、マニフェスト

https://www.myreddittest.com/r2 

にリダイレクトされますが、活動は開かれません(代わりにブラウザがURLにアクセスしようとすると失敗します)。

問題: マイアプリは自分の電話機とエミュレータのどちらでも動作します。しかし、私の主要な電話は、リダイレクトの後で活動を開くことはありません。

質問: これは携帯電話のOSのバグではありますか? すべての電話機で動作することを確認するにはどうすればよいですか?

この動作を防止するための提案は深く感謝しています!

+0

私はAndroidの開発者ではありませんが、redditに投稿してみましたか?/r/redditdevまたは/ r/androiddevに関するヘルプがあります。 –

+0

実際に私が持っているが、r/androiddevは私がstackoverflowに投稿する必要があると言います。それにもかかわらず、私の問題はAndroidともっと関係していると思いますし、Reddit固有ではありません。 – MehmetGunacti

+0

問題を一般化すると役立ちます。レッドでないアプリで問題を再現できるかどうかを確認し、重複する箇所を見つけてください。 –

答えて

0

私は、システムに自分のUrlを処理するように依頼する代わりに、新しいアクティビティを作成しました。これに代えて :活動の

<?xml version="1.0" encoding="utf-8"?> 
<WebView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/webview" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"/> 

いくつかのコード:

@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.layout_webview); 

webView = (WebView) findViewById(R.id.webview); 
webView.loadUrl(LOGIN_URL); 
webView.setWebViewClient(new WebViewClient() { 

    @Override 
    public void onPageStarted(WebView view, String url, Bitmap favicon) { 
     if (url.startsWith(LOGIN_REDIRECT_URI)) { 
      view.stopLoading(); 

      AlertDialog.Builder builder = new AlertDialog.Builder(R2AuthorizationActivity.this); 
      builder.setView(R.layout.layout_webview_overlay); 
      builder.setPositiveButton("CANCEL", null); 

      // CREATE ALERT DIALOG 
      alertDialog = builder.create(); 
      alertDialog.show(); 

      doStuffWithParameterAndCallFinish(Uri.parse(url).getQueryParameter("code")); 
     } else 
      super.onPageStarted(view, url, favicon); 
    } 

    }); 
} 

void finish(boolean success) { 
    alertDialog.cancel(); 
    setResult(success ? Activity.RESULT_OK : Activity.RESULT_CANCELED); 
    finish(); 
} 

startActivityForResult(new Intent(R2App.getContext(), R2AuthorizationActivity.class), 1234); 

このアクティビティでは、内部の1つのWebViewで構成されています

Intent i = new Intent(Intent.ACTION_VIEW); 
     i.setData(Uri.parse(LOGIN_URL)); 
startActivity(i); 

私は今、このコードを持っています

layout_webview_overlay.xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@color/activityBackground" 
    android:orientation="horizontal" 
    android:padding="20dp"> 

    <ProgressBar 
     android:id="@+id/loading_spinner" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_vertical" 
     android:layout_marginStart="10dp" 
     android:indeterminateTint="@color/accent" 
     android:indeterminateTintMode="src_atop"/> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_vertical" 
     android:layout_marginStart="10dp" 
     android:text="Authorizing ..." 
     android:textColor="@color/white"/> 

</LinearLayout> 
関連する問題