#android #kotlin
Вопрос:
Я новичок в разработке Android и в настоящее время изучаю неявные намерения. Я реализовывал открыватель URL-адресов, но мое приложение продолжает сбоить. Я сделал все в соответствии с учебником, но все равно получил ту же ошибку. Я прикрепляю свой файл main_activity.kt, manifest.xml и файл с ошибкой ниже. Пожалуйста, скажите мне, где я ошибаюсь.
package com.example.intents
import android.content.Intent
import android.net.Uri
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
var searchBtn = findViewById<Button>(R.id.searchbtn)
var eTv = findViewById<EditText>(R.id.eTv)
var url: String = eTv.text.toString()
var it: Intent = Intent(Intent.ACTION_VIEW)
it.data = Uri.parse(url)
startActivity(it)
}
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.intents">
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.Intents">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
2021-08-11 09:03:31.012 15235-15235/com.example.intents E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.intents, PID: 15235
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.intents/com.example.intents.MainActivity}: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat= }
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3374)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3513)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2109)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7682)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:516)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
Caused by: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat= }
at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:2241)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1895)
at android.app.Activity.startActivityForResult(Activity.java:5205)
at androidx.activity.ComponentActivity.startActivityForResult(ComponentActivity.java:597)
at android.app.Activity.startActivityForResult(Activity.java:5163)
at androidx.activity.ComponentActivity.startActivityForResult(ComponentActivity.java:583)
at android.app.Activity.startActivity(Activity.java:5534)
at android.app.Activity.startActivity(Activity.java:5502)
at com.example.intents.MainActivity.onCreate(MainActivity.kt:22)
at android.app.Activity.performCreate(Activity.java:7815)
at android.app.Activity.performCreate(Activity.java:7804)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1318)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3349)
Комментарии:
1. Добавьте проверку URL-адреса. URL-адрес должен начинаться с
http://
2. @Sniffer var Url = » www .» url. Пытался это сделать, но теперь он ищет только » www .». Это не взятие текста из редактируемого текста.
3. Пожалуйста, прокомментируйте свой полный URL-адрес здесь…
4. @Сниффер вар url: Строка = eTv.текст.toString() вар Url = » $url.org »
5. Ваш URL-адрес в недопустимом формате
Ответ №1:
Вы установили текст (URL) в Edittext в xml-файле?. Потому что здесь вы просто передаете текст из функции редактирования текста в onCreate (), которая будет вызвана, как только начнется действие. Если вы не задали текст в xml-файле, то он должен быть равен нулю. Прежде всего, запустите намерение на прослушивателе щелчка, а также оберните намерение в блок try — catch, так как он может вызвать исключение MalformedURLException, если URL неверен. Нравится,
findViewById<TextView>(R.id.textView).setOnClickListener {
try {
Intent(Intent.ACTION_VIEW).also {
it.data = Uri.parse("https://localhost:8080/")
startActivity(it)
}
}catch (e: MalformedURLException){
e.printStackTrace()
Toast.makeText(this , "Enter valid URL" , Toast.LENGTH_LONG).show()
}
}