私は全く新しいアンドロイドと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)
ためthis link文書を使用することができます
事は、私がgetIntent [コード2]を置くべき場所を私は知らないときにアプリがクラッシュ –
あなたのlogcatを表示します。 MainActivity.javaの@Override public void onStart()またはpublic void onCreate(Bundle savedInstanceState)の下に置いてみましたが、動作しませんでした。コードがどこにあるのか理解してもらえますか? – AAK
それはonCreateの中に入り、わかりやすいクラッシュログを投稿します –