【发布时间】:2017-03-23 04:02:09
【问题描述】:
在我的活动中,我有一个 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,但我希望两者一起工作。
我搜索了 TextType 的 Webview.HitResult 选项,但它没有这样的选项。 https://developer.android.com/reference/android/webkit/WebView.HitTestResult.html
【问题讨论】:
-
使用 touchlistener 和手势监听器,如果你想复制粘贴返回 false,如果你想做自定义任务返回 true
标签: android android-intent webview copy-paste long-press