相关疑难解决方法(0)

在 android 11 中使用 intent.resolveActivity 调用此方法时,请考虑在清单中添加查询声明

我有一个扩展功能,用于为我的活动打开一个意图:

fun Activity.openIntent(action: String?, type: String?, uri: Uri?) {
    Intent()
        .apply {
            action?.let { this.action = it }
            uri?.let { this.data = it }
            type?.let { this.type = it }
        }
        .also { intent ->
            packageManager?.let {
                if (intent.resolveActivity(it) != null)
                    startActivity(intent)
                else
                    showToast(R.string.application_not_found)
            }
        }
}
Run Code Online (Sandbox Code Playgroud)

我的targetSdkVersion30。它给了我一个警告intent.resolveActivity(it)

调用此方法时,请考虑向清单添加查询声明。

那么我应该怎么做才能解决这个警告呢?

android kotlin android-11

16
推荐指数
3
解决办法
3907
查看次数

处理Android中的未知URI方案(比特币示例)

我想在Android应用程序的PreferenceScreen中集成"通过比特币捐赠"按钮.

有一些适用于Android的比特币客户端,比特币维基定义了一个应该用于BTC支付的URI方案.

我试过以下代码

findPreference(getString(R.string.preference_donateBitcoin)).setOnPreferenceClickListener(new OnPreferenceClickListener() {

            @Override
            public boolean onPreferenceClick(Preference preference) {
                String url = getString(R.string.pref_donateBitcoin_uri);
                Intent i = new Intent(Intent.ACTION_VIEW);
                i.setData(Uri.parse(url));
                startActivity(i);
                return false;
            }
        });
Run Code Online (Sandbox Code Playgroud)

withou在手机上安装了BTC.我尝试使用以下URI启动intent:bitcoin:19iSEgNkJnEUtNDuuTkkZrU44PVKYMVfhz?amount=1期望Android告诉我没有安装处理程序.

相反,我得到了一个 ActivityNotFoundException

android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=bitcoin:19iSEgNkJnEUtNDuuTkkZrU44PVKYMVfhz?amount=1 }
Run Code Online (Sandbox Code Playgroud)

我的问题是正确处理(读取"最佳实践")设备未知的URI方案.

  • 如何检查某个URI方案是否至少可以由一个应用程序处理?(如果更多,我想一个选择屏幕)
  • 关于比特币,但没有提到任何特定的客户,通过比特币支付时,最好的意图应该是什么?没有安装BTC客户端时如何处理?

[编辑]:问题是错误的,因为我搞砸了我的手机备份,并假设比特币钱包应用程序安装时没有.

android android-intent bitcoin

5
推荐指数
1
解决办法
1773
查看次数

使用Intent.ACTION_GET_CONTENT选择一个文件

我正在按照本教程,我在模拟器上测试它,当我运行这个项目并单击它崩溃的按钮并给我以下错误

07-27 06:33:30.324: E/AndroidRuntime(10972): FATAL EXCEPTION: main
07-27 06:33:30.324: E/AndroidRuntime(10972): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.GET_CONTENT typ=file/ * }
07-27 06:33:30.324: E/AndroidRuntime(10972):    at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1408)
07-27 06:33:30.324: E/AndroidRuntime(10972):    at android.app.Instrumentation.execStartActivity(Instrumentation.java:1378)
07-27 06:33:30.324: E/AndroidRuntime(10972):    at android.app.Activity.startActivityForResult(Activity.java:2817)
07-27 06:33:30.324: E/AndroidRuntime(10972):    at com.exercise.AndroidPick_a_File.AndroidPick_a_File$1.onClick(AndroidPick_a_File.java:35)
07-27 06:33:30.324: E/AndroidRuntime(10972):    at android.view.View.performClick(View.java:2408)
07-27 06:33:30.324: E/AndroidRuntime(10972):    at android.view.View$PerformClick.run(View.java:8816)
07-27 06:33:30.324: E/AndroidRuntime(10972):    at android.os.Handler.handleCallback(Handler.java:587)
07-27 06:33:30.324: E/AndroidRuntime(10972):    at android.os.Handler.dispatchMessage(Handler.java:92)
07-27 06:33:30.324: E/AndroidRuntime(10972):    at android.os.Looper.loop(Looper.java:123)
07-27 06:33:30.324: E/AndroidRuntime(10972):    at android.app.ActivityThread.main(ActivityThread.java:4627)
07-27 06:33:30.324: E/AndroidRuntime(10972):    at java.lang.reflect.Method.invokeNative(Native Method) …
Run Code Online (Sandbox Code Playgroud)

android android-intent android-file

0
推荐指数
1
解决办法
4599
查看次数