Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
liujiuri
engine
提交
ca6d4fde
E
engine
项目概览
liujiuri
/
engine
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
E
engine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
ca6d4fde
编写于
10月 17, 2016
作者:
A
Adam Barth
提交者:
GitHub
10月 17, 2016
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add clipboard functionality to platform plugin (#3139)
This will eventually replace the clipboard mojom.
上级
26e6935b
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
54 addition
and
1 deletion
+54
-1
shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java
...rm/android/io/flutter/plugin/platform/PlatformPlugin.java
+31
-0
shell/platform/darwin/ios/framework/Source/FlutterPlatformPlugin.mm
...form/darwin/ios/framework/Source/FlutterPlatformPlugin.mm
+23
-1
未找到文件。
shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java
浏览文件 @
ca6d4fde
...
...
@@ -5,6 +5,10 @@
package
io.flutter.plugin.platform
;
import
android.app.Activity
;
import
android.content.ClipboardManager
;
import
android.content.ClipData
;
import
android.content.ClipDescription
;
import
android.content.Context
;
import
android.content.Intent
;
import
android.content.pm.ActivityInfo
;
import
android.net.Uri
;
...
...
@@ -27,6 +31,7 @@ public class PlatformPlugin extends JSONMessageListener implements ActivityLifec
private
final
Activity
mActivity
;
public
static
final
int
DEFAULT_SYSTEM_UI
=
View
.
SYSTEM_UI_FLAG_LAYOUT_STABLE
|
View
.
SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
;
private
static
final
String
kTextPlainFormat
=
"text/plain"
;
public
PlatformPlugin
(
Activity
activity
)
{
mActivity
=
activity
;
...
...
@@ -53,6 +58,10 @@ public class PlatformPlugin extends JSONMessageListener implements ActivityLifec
setSystemChromeSystemUIOverlayStyle
(
args
.
getString
(
0
));
}
else
if
(
method
.
equals
(
"SystemNavigator.pop"
))
{
popSystemNavigator
();
}
else
if
(
method
.
equals
(
"Clipboard.getData"
))
{
return
getClipboardData
(
args
.
getString
(
0
));
}
else
if
(
method
.
equals
(
"Clipboard.setData"
))
{
setClipboardData
(
args
.
getJSONObject
(
0
));
}
else
if
(
method
.
equals
(
"PathProvider.getTemporaryDirectory"
))
{
return
getPathProviderTemporaryDirectory
();
}
else
if
(
method
.
equals
(
"PathProvider.getApplicationDocumentsDirectory"
))
{
...
...
@@ -166,6 +175,28 @@ public class PlatformPlugin extends JSONMessageListener implements ActivityLifec
mActivity
.
finish
();
}
private
JSONObject
getClipboardData
(
String
format
)
throws
JSONException
{
ClipboardManager
clipboard
=
(
ClipboardManager
)
mActivity
.
getSystemService
(
Context
.
CLIPBOARD_SERVICE
);
ClipData
clip
=
clipboard
.
getPrimaryClip
();
if
(
clip
==
null
)
return
null
;
if
((
format
==
null
||
format
.
equals
(
kTextPlainFormat
))
&&
clip
.
getDescription
().
hasMimeType
(
ClipDescription
.
MIMETYPE_TEXT_PLAIN
))
{
JSONObject
result
=
new
JSONObject
();
result
.
put
(
"text"
,
clip
.
getItemAt
(
0
).
getText
().
toString
());
return
result
;
}
return
null
;
}
private
void
setClipboardData
(
JSONObject
data
)
throws
JSONException
{
ClipboardManager
clipboard
=
(
ClipboardManager
)
mActivity
.
getSystemService
(
Context
.
CLIPBOARD_SERVICE
);
ClipData
clip
=
ClipData
.
newPlainText
(
"text label?"
,
data
.
getString
(
"text"
));
clipboard
.
setPrimaryClip
(
clip
);
}
private
JSONObject
getPathProviderTemporaryDirectory
()
throws
JSONException
{
JSONObject
result
=
new
JSONObject
();
result
.
put
(
"path"
,
mActivity
.
getCacheDir
().
getPath
());
...
...
shell/platform/darwin/ios/framework/Source/FlutterPlatformPlugin.mm
浏览文件 @
ca6d4fde
...
...
@@ -9,7 +9,11 @@
#include <UIKit/UIApplication.h>
#include <UIKit/UIKit.h>
static
NSDictionary
*
GetDirectoryOfType
(
NSSearchPathDirectory
dir
)
{
namespace
{
constexpr
char
kTextPlainFormat
[]
=
"text/plain"
;
NSDictionary
*
GetDirectoryOfType
(
NSSearchPathDirectory
dir
)
{
NSArray
*
paths
=
NSSearchPathForDirectoriesInDomains
(
dir
,
NSUserDomainMask
,
YES
);
if
(
paths
.
count
==
0
)
...
...
@@ -17,6 +21,8 @@ static NSDictionary* GetDirectoryOfType(NSSearchPathDirectory dir) {
return
@{
@"path"
:
paths
.
firstObject
};
}
}
// namespaces
namespace
shell
{
// TODO(abarth): Move these definitions from system_chrome_impl.cc to here.
...
...
@@ -58,6 +64,10 @@ using namespace shell;
[
self
setSystemChromeSystemUIOverlayStyle
:
args
.
firstObject
];
}
else
if
([
method
isEqualToString
:
@"SystemNavigator.pop"
])
{
[
self
popSystemNavigator
];
}
else
if
([
method
isEqualToString
:
@"Clipboard.getData"
])
{
return
[
self
getClipboardData
:
args
.
firstObject
];
}
else
if
([
method
isEqualToString
:
@"Clipboard.setData"
])
{
[
self
setClipboardData
:
args
.
firstObject
];
}
else
if
([
method
isEqualToString
:
@"PathProvider.getTemporaryDirectory"
])
{
return
[
self
getPathProviderTemporaryDirectory
];
}
else
if
([
method
isEqualToString
:
@"PathProvider.getApplicationDocumentsDirectory"
])
{
...
...
@@ -166,6 +176,18 @@ using namespace shell;
// Apple's human user guidelines say not to terminate iOS applications.
}
-
(
NSDictionary
*
)
getClipboardData
:(
NSString
*
)
format
{
UIPasteboard
*
pasteboard
=
[
UIPasteboard
generalPasteboard
];
if
(
!
format
||
[
format
isEqualToString
:
@
(
kTextPlainFormat
)])
return
@{
@"text"
:
pasteboard
.
string
};
return
nil
;
}
-
(
void
)
setClipboardData
:(
NSDictionary
*
)
data
{
UIPasteboard
*
pasteboard
=
[
UIPasteboard
generalPasteboard
];
pasteboard
.
string
=
data
[
@"text"
];
}
-
(
NSDictionary
*
)
getPathProviderTemporaryDirectory
{
return
GetDirectoryOfType
(
NSCachesDirectory
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录