2017-11-05 1 views
1

私は全く新しいアンドロイドとjavaですので、些細なことを尋ねると赦免されます。私は誰かがGoogleの検索や電子メールから私のウェブサイトのURLをクリックするたびに正常に開くwebviewアプリを持っています。 AndroidManifest.xmlに次のコード[コード1]を入れました。これは本当にうまくいっています。アンドロイドで私のウェブサイトのURLをクリックするたびに、アプリが開きます。アンドロイドWebビューでURLを読み込む方法をインテントから傍受しましたか?

問題点私は、意図からURLを取得できず、webviewアプリケーションにURLをロードできません。たとえば、ユーザーがwww.mywebsite.com/contactというリンクをクリックすると、アプリを開き、webview要素でデフォルトのwww.mywebsite.comを起動します。これは、私がまだインテントから受け取ったデータ(URL)を渡しておらず、そのURLをwebviewにロードしているために起こります。

私はインテントを受け取ってwebview [コード2]をロードするコードを持っていますが、動作しません。私が意図を使ってアプリを開くたびに(Google検索からのリンクをクリックして)アプリがクラッシュした。私は、MainActivity.javaであろうと他のファイルであろうと、そのコードをどこに置くべきかわかりません。それは小さなコードです、私が間違っていることを教えてください。

[コード1] ----------------------

<activity 
    android:name=".activity.MainActivity" 
    android:label="@string/app_name" 
    android:launchMode="standard" 
    android:configChanges="keyboard|keyboardHidden|orientation|screenSize"> 
    <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" 
     android:host="www.mywebsite.com" 
     android:pathPrefix="/"/> 
    </intent-filter> 

</activity> 

[コード1] --------- ---------------

[コード2] ------------------------

if(getIntent().getData()!=null) 
{ 
Uri data = getIntent().getData(); 
String scheme = data.getScheme(); 
String fullPath = data.getEncodedSchemeSpecificPart(); 

combine = scheme+"://"+fullPath; 
} 

String url = null; 
if(combine!=null) 
{ 
url = combine; 
webview.loadUrl(url); 
} 

[コード2] ------------------------

として組み合わせる宣言 '文字列= NULLを組み合わせ;'ファイルの先頭に。

私はこの[Code 2]をStackOverflow自体から取得しましたが、どのファイルのどこにどのような機能を置くべきかはわかりません。

これは、Play Consolクラッシュセクションからのエラーログです。

あなたがするのonCreateメソッドで(コード2)を書き込む必要がありますので、あなたは、あなたのマニフェストのこのセクションで定義されたハンドルスキームのために、あなたの意図・フィルタ、(コード2)あなたのMainActivity内のonCreateメソッド内のセクションを置くべき
java.lang.RuntimeException: 
    at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2659) 
    at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2724) 
    at android.app.ActivityThread.-wrap12 (ActivityThread.java) 
    at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1473) 
    at android.os.Handler.dispatchMessage (Handler.java:102) 
    at android.os.Looper.loop (Looper.java:154) 
    at android.app.ActivityThread.main (ActivityThread.java:6123) 
    at java.lang.reflect.Method.invoke (Native Method) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:867) 
    at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:757) 

Caused by: java.lang.NullPointerException: 
    at com.mytemplates.webviewapp.activity.MainActivity.onCreate (MainActivity.java:94) 
    at android.app.Activity.performCreate (Activity.java:6672) 
    at android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1140) 
    at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2612) 
+1

ためthis link文書を使用することができます

 WebView webview = (WebView) findViewById(R.id.WebView); webview.getSettings().setJavaScriptEnabled(true); Intent intent=getIntent(); String action = intent.getAction(); if (Intent.ACTION_VIEW.equals(action) && (intent.getData() != null)) { Uri data = intent.getData(); String scheme = data.getScheme(); String fullPath = data.getEncodedSchemeSpecificPart(); combine = scheme+"://"+fullPath; } String url = null; if(combine!=null) { url = combine; webview.loadUrl(url); } 

事は、私がgetIntent [コード2]を置くべき場所を私は知らないときにアプリがクラッシュ –

+0

あなたのlogcatを表示します。 MainActivity.javaの@Override public void onStart()またはpublic void onCreate(Bundle savedInstanceState)の下に置いてみましたが、動作しませんでした。コードがどこにあるのか理解してもらえますか? – AAK

+0

それはonCreateの中に入り、わかりやすいクラッシュログを投稿します –

答えて

0

あなたのMainActivityクラス。あなたはより多くの情報

+0

私はコードを試してonCreateメソッドの下に置いた。アプリはまだクラッシュしています。 Play Consolからのクラッシュログファイルが問題に含まれています。 – AAK

+0

@AAK答えを更新してください。もう一度確認してください。 –

+0

このコードも試しましたが、問題はwebview.loadUrl(url)です。ライン。私はこの行をエスケープする場合、アプリケーションは失敗しないが、また動作しません。デフォルトのホームページを開きます。 – AAK

関連する問題