【发布时间】:2018-06-26 16:38:38
【问题描述】:
我有应用程序“A”需要通过隐式意图从其他应用程序“B、C、D”打开
所以,在我的应用“A”中,我定义了意图过滤器
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<!-- Accepts URIs that begin with "example://gizmos” -->
<data
android:host="applink"
android:scheme="mobileapp"/>
</intent-filter>
在应用程序“B”中,我已经定义了隐式意图
Intent LaunchIntent = getPackageManager().getLaunchIntentForPackage("package.name.of.destination.app");
startActivity(LaunchIntent);
我得到这样的错误
2018-06-26 19:35:44.155 2270-2270/com.example.ezplan.deleteit E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.ezplan.deleteit, PID: 2270
java.lang.IllegalStateException: Could not execute method for android:onClick
at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:390)
at android.view.View.performClick(View.java:6597)
at android.view.View.performClickInternal(View.java:6574)
at android.view.View.access$3100(View.java:778)
at android.view.View$PerformClick.run(View.java:25883)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6642)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:385)
at android.view.View.performClick(View.java:6597)
at android.view.View.performClickInternal(View.java:6574)
at android.view.View.access$3100(View.java:778)
at android.view.View$PerformClick.run(View.java:25883)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6642)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.content.Intent.migrateExtraStreamToClipData()' on a null object reference
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1666)
at android.app.Activity.startActivityForResult(Activity.java:4584)
at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:792)
at android.app.Activity.startActivityForResult(Activity.java:4542)
at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:779)
at android.app.Activity.startActivity(Activity.java:4903)
at android.app.Activity.startActivity(Activity.java:4871)
at com.example.ezplan.deleteit.MainActivity.doOnCLickButton(MainActivity.java:29)
我做错了什么?
或者,给我一个正确的示例
欢迎提问
EDIT1
1)我需要打开的应用程序中的过滤器
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<!-- Accepts URIs that begin with "mobileapp://applink” -->
<data
android:host="applink"
android:scheme="mobileapp"/>
</intent-filter>
2) 我在应用中尝试调用外部应用的代码
public void testit(View view)
{
Intent LaunchIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("mobileapp://applink"))
.setPackage("package.name.of.destination.app");
startActivity(LaunchIntent);
}
例外
原因:android.content.ActivityNotFoundException:未找到处理 Intent 的 Activity { act=android.intent.action.VIEW dat=mobileapp://applink pkg=package.name.of.destination.app }
【问题讨论】:
-
你好,尝试设置
launchIntent.addCategory(Intent.CATEGORY_LAUNCHER);或者更好的尝试使用this method -
这个异常看起来和你的
IntentFilter一点关系都没有。向我们展示您的OnClickListener和XML布局。你在使用数据绑定吗? -
@Darwind 在问题中添加了 EDIT 部分,不,我不使用 DataBinding
标签: java android android-intent intentfilter