NFCタグデータを読み込むAndroidアプリを作成しました。自分のアプリはスキャン開始ボタンを押すことでNFCタグを読み込むのですが、タグを近づけただけで起動するアプリが入っているとそちらが優先されて画面を専有してしまいます。
この別のアプリの挙動を自分のアプリからコントロールして、起動させないようにすることは可能ですか?
ここまでの理解
intentを拾って、flutterアプリ上で操作するやり方がある?
AndroidManifest.xml
xml
1 <intent-filter> 2 <action android:name="android.nfc.action.NDEF_DISCOVERED"/> 3 <category android:name="android.intent.category.DEFAULT"/> 4 <data android:mimeType="text/plain" /> 5 </intent-filter>
kotlinとjavaでの情報しか見つからなかったので、MainActivity.kt
にコード入れてNFCのviewから実行しようとしたが Unresolved reference: IntentFilter
などのエラー。
package com.example.myapp import android.content.res.Configuration import android.os.Bundle import android.os.PersistableBundle import androidx.annotation.NonNull import io.flutter.embedding.android.FlutterActivity import io.flutter.embedding.engine.FlutterEngine import io.flutter.plugins.GeneratedPluginRegistrant import io.flutter.embedding.android.FlutterFragment import io.flutter.plugin.common.MethodCall import io.flutter.plugin.common.MethodChannel import io.flutter.plugin.common.MethodChannel.MethodCallHandler import io.flutter.plugin.common.MethodChannel.Result import io.flutter.plugin.platform.PlatformViewsController import androidx.appcompat.app.AppCompatActivity import android.content.Intent import android.view.View import android.widget.EditText class MainActivity: FlutterActivity() { private val CHANNEL = "com.myapp.test" override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) { GeneratedPluginRegistrant.registerWith(flutterEngine) MethodChannel(flutterEngine.dartExecutor, CHANNEL).setMethodCallHandler { methodCall, result -> val args = methodCall.arguments when (methodCall.method) { "intentHandle" -> { val ndef = IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED).apply { try { addDataType("*/*") } catch (e: IntentFilter.MalformedMimeTypeException) { throw RuntimeException("fail", e) } } intentFiltersArray = arrayOf(ndef) } } } } companion object { private val CHANNEL = "com.myapp.test" } }
foreground dispatch system
を使うとできるようなドキュメントもありますが、具体的にどこに記述するコードなのかよくわかりません。
https://developer.android.com/guide/topics/connectivity/nfc/advanced-nfc#foreground-dispatch
そもそも、他アプリの挙動を操作することは可能なんでしょうか?
可能であればアプローチ方法を知りたいです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。