Android 每次都会询问我要使用哪个应用程序,即使在我将我的应用程序设置为默认应用程序之后也是如此。为啥?
Posted
技术标签:
【中文标题】Android 每次都会询问我要使用哪个应用程序,即使在我将我的应用程序设置为默认应用程序之后也是如此。为啥?【英文标题】:Android asks me which app to use every time, even after I've set my app as the default. Why?Android 每次都会询问我要使用哪个应用程序,即使在我将我的应用程序设置为默认应用程序之后也是如此。为什么? 【发布时间】:2021-04-27 21:50:51 【问题描述】:我的应用有一个用于打开 YouTube 链接的活动,其中包含我从 NewPipe 复制的意图过滤器。它工作正常:当我单击 YouTube 链接时,android 会询问我要使用哪个应用程序,并且我的应用程序会出现在列表中。 问题是,它每次都会问我这个问题,即使在我进入设置并选择“在此应用中打开”之后也是如此。
NewPipe 按预期工作:选择“在此应用中打开”后,它用于每次打开 YouTube 链接,无需询问。
这是我的活动的 AndroidManifest 部分,复制自 here:
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
<!-- Youtube filter, copied from NewPipe -->
<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" />
<data android:scheme="https" />
<data android:host="youtube.com" />
<data android:host="m.youtube.com" />
<data android:host="www.youtube.com" />
<data android:host="music.youtube.com" />
<!-- video prefix -->
<data android:pathPrefix="/v/" />
<data android:pathPrefix="/embed/" />
<data android:pathPrefix="/watch" />
<data android:pathPrefix="/attribution_link" />
<!-- channel prefix -->
<data android:pathPrefix="/channel/" />
<data android:pathPrefix="/user/" />
<data android:pathPrefix="/c/" />
</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" />
<data android:scheme="https" />
<data android:host="youtu.be" />
<data android:pathPrefix="/" />
</intent-filter>
</activity>
【问题讨论】:
【参考方案1】:我没有做任何测试来最终回答这个问题,但我认为就我而言,这是因为我的应用没有“主要活动”。我添加了一个包含 LAUNCHER 和 DEFAULT 类别的适当活动,现在该应用程序的行为符合我的预期。
这可能是一项安全功能,以防止“隐藏”应用劫持某人的意图。
【讨论】:
以上是关于Android 每次都会询问我要使用哪个应用程序,即使在我将我的应用程序设置为默认应用程序之后也是如此。为啥?的主要内容,如果未能解决你的问题,请参考以下文章
Firebase Google SignIn 每次都会询问权限
为啥每次尝试运行 Python 程序时 Eclipse 都会要求我“构建”?