在我的活动中,我有一个Web视图,在manifest.xml中,我这样声明了意图过滤器
<activity
android:name=".ui.socialNetwork.MySocialNetworkActivity"
android:configChanges="orientation|screenSize"
android:process=":fb"
android:screenOrientation="portrait" >
</activity>
<activity-alias
android:targetActivity=".ui.socialNetwork.MySocialNetworkActivity"
android:name=".AliasMySocialNetworkActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.PROCESS_TEXT" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
</activity-alias>
这不是启动器活动。此处使用的意图过滤器用于长按Web视图上的复制粘贴工具栏。这很好。除此之外,我想将Webview.setOnLongClickListener()用作其他选项,并且这样实现。
webView = (WebView) findViewById(R.id.webview);
PackageManager pm = getApplicationContext().getPackageManager();
ComponentName compName =
new ComponentName(getPackageName(), getPackageName() + ".AliasMySocialNetworkActivity");
pm.setComponentEnabledSetting(
compName,
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);
webView.setOnLongClickListener(new View.OnLongClickListener() {
public boolean onLongClick(View v) {
WebView.HitTestResult hitResult = null;
hitResult = webView.getHitTestResult();
if (hitResult != null && hitResult.getExtra() != null) {
final String hitRes = hitResult.getExtra();
if (hitResult.getType() == WebView.HitTestResult.IMAGE_TYPE || hitResult.getType() == WebView.HitTestResult.SRC_IMAGE_ANCHOR_TYPE) {
Intent ImageSaveIntent = new Intent(getApplicationContext(), SaveImage.class);
ImageSaveIntent.putExtra("putImage", hitRes);
startActivity(ImageSaveIntent);
}
if (hitResult.getType() != WebView.HitTestResult.IMAGE_TYPE || hitResult.getType() != WebView.HitTestResult.SRC_IMAGE_ANCHOR_TYPE) {
PackageManager pm = getApplicationContext().getPackageManager();
ComponentName compName =
new ComponentName(getPackageName(), getPackageName() + ".AliasMySocialNetworkActivity");
pm.setComponentEnabledSetting(
compName,
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP);
}
}
return true;
}
});
我的问题是
如果我单独使用意图过滤器而不使用webview.setOnLongClickListener(),则可以将文本复制粘贴到webview中
如果我单独使用webview.setOnLongClickListener(),我可以做其他选择,并且可以正常工作。
如果同时实现意图过滤器和webview.setOnLongClickListener(),则无法从webview复制粘贴文本。 webview.setOnLongClickListener()可以正常工作。在这里,我了解到这两个功能都取决于longPress,但是我希望两者一起工作。
我在Webview.HitResult选项中搜索了TextType,但没有这种选项。https://developer.android.com/reference/android/webkit/WebView.HitTestResult.html
您可以使用“活动别名”来执行此操作(通过编程方式从android清单中禁用意图过滤器:
1)将AndroidManifest.xml中的(例如AliasMySocialNetworkActivity)添加到MySocialNetworkActivity中,然后将意图过滤器移至其中。看起来像这样:
就我而言,
applicationIdSuffix
参数作为构建类型(例如,“。debug”后缀用于调试变量)或构建风味,它将赢得无法工作,因为无法在代码中找到您的组件。