Deb*_*tta 4 android-intent chrome-custom-tabs android-studio-4.0
我正在 android studio 4.0 中尝试 codelabs 的一些代码,并在应用程序中使用以下代码:
String uri = uritext.getText().toString();//uritext is an editText view
Uri webpage = Uri.parse(uri);
Intent intent = new Intent(Intent.ACTION_VIEW, webpage);
if(intent.resolveActivity(getApplicationContext().getPackageManager())!=null){
startActivity(intent);
}
else {
Log.d("implicitintent:","cant handle this implicit intent!");
Toast toast = Toast.makeText(MainActivity.this,"cant open website:" + uri,Toast.LENGTH_SHORT);
toast.show();
}
Run Code Online (Sandbox Code Playgroud)
我已经在两个不同的 AVD 中尝试了上述代码,当我尝试在按钮单击事件中执行上述代码时,它们都显示了 toast 消息。这意味着resolveActivity() 返回一个null。我找不到任何可能的原因,因为我发现两个 AVD 上都安装了 google chrome。Logcat 显示以下几行:
2020-07-14 17:39:05.829 392-392/? E/netmgr: Failed to open QEMU pipe 'qemud:network': Invalid argument
2020-07-14 17:39:08.229 395-395/? E/wifi_forwarder: RemoteConnection failed to initialize: RemoteConnection failed to open pipe
2020-07-14 17:39:28.490 1889-2010/system_process E/ClipboardService: Denying clipboard access to com.android.chrome, application is not in focus neither is a system service for user 0
2020-07-14 17:39:31.234 1889-3470/system_process W/system_server: JNI critical lock held for 18.962ms on Thread[120,tid=3470,Runnable,Thread*=0xadd6a010,peer=0x13dc0a38,"Binder:1889_13"]
Run Code Online (Sandbox Code Playgroud)
从 Logcat 看来,android studio 内部可能出了问题。我在谷歌上做了一些研究,但找不到任何合适的答案。任何人请帮助我解决这个问题,因为我被困在这里。任何帮助都是非常值得赞赏的。提前致谢。
raf*_*007 10
从 Android 11 开始 - 使用包管理器对包可见性有了新的限制。
getPackageManager().resolveActivity()。---返回null
为了获取可用的包 - 必须将查询添加到您的清单中。
例子:
<queries>
<!-- WebView -->
<intent>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http" />
</intent>
<intent>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https" />
</intent>
<!-- Camera -->
<intent>
<action android:name="android.media.action.IMAGE_CAPTURE" />
</intent>
<!-- Gallery -->
<intent>
<action android:name="android.intent.action.GET_CONTENT" />
</intent>
</queries>
Run Code Online (Sandbox Code Playgroud)
这应该放在标签<application></application>之外AndroidManifest.xml
以下是不同查询的用例列表。
| 归档时间: |
|
| 查看次数: |
4331 次 |
| 最近记录: |