发布新产品时,我的服务器需要使用密钥捕获文件。多少个文件没有限制。文件是无限的。
使用Retrofit 1.9,一切都完美无缺。更新到Retrofit 2后,我的服务器未收到任何文件。
如果我编辑服务器,它将不再向后兼容。我需要使android应用能够像Retrofit 1.9一样工作。
这是我的实现方式。
类以创建ApiService接口。
public class ApiClient {
public interface ApiInterface {
@Multipart
@POST("/products/")
void uploadProduct(
@PartMap Map<String, String> params,
@PartMap Map<String, TypedFile> files,
Callback<Product> cb);
}
}
Run Code Online (Sandbox Code Playgroud)
使用ApiService。
Map<String, String> params = new HashMap<>();
params.put("title", title);
params.put("price", price);
params.put("content", content);
Map<String, TypedFile> files = new HashMap<>();
for (int pos = 0; pos < photoPaths.length; pos++) {
if (!Strings.isNullOrEmpty(photoPaths[pos])) {
TypedFile typedFile = new TypedFile("multipart/form-data", new File(photoPaths[pos]));
files.put("photo_" + String.valueOf(pos + 1), typedFile);
}
} …
Run Code Online (Sandbox Code Playgroud) 选项菜单项具有支持库25应该具有的大小,但是当我使用26.0.0时,它们都被挤压了.
菜单项xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/people"
android:icon="@drawable/icon_addfriends_newsfeed"
android:title=""
app:showAsAction="always" />
</menu>
Run Code Online (Sandbox Code Playgroud)
AppCompatActivity中的onCreateOptionsMenu
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.newsfeed, menu);
return true;
}
Run Code Online (Sandbox Code Playgroud)
工具栏布局
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimaryDark"
android:theme="@style/ToolbarColoredBackArrow"
app:popupTheme="@style/AppTheme.PopupOverlay"/>
</android.support.design.widget.AppBarLayout>
Run Code Online (Sandbox Code Playgroud)
我想将一些文件从它自己的数据文件夹(例如"/data/data/com.example.copy/")复制到"/ data/local/tmp /".我无法在我的应用中访问/ data/local/tmp /.有可能吗?我的设备上没有root访问权限.
这是我的代码:
Process p=Runtime.getRuntime().exec("cat "+ this.getApplicationInfo().dataDir +"1.txt > /data/local/tmp/1.txt" );
p.waitFor();
Run Code Online (Sandbox Code Playgroud) class Sample extends React.Component {
constructor(props) {
super(props);
this.handleChild = this.handleChild.bind(this);
this.handleParent = this.handleParent.bind(this);
}
render() {
return (
<div
style={{width: '100%', height: '500px', background: 'white'}}
onClick={this.handleParent}>
<div
style={{ width: '40px', height: '40px', margin: '0 auto', background: 'black'}}
onClick={this.handleChild}>
hello
</div>
</div>
);
}
handleParent(e) {
console.log('parent');
}
handleChild(e) {
console.log('child');
}
}
Run Code Online (Sandbox Code Playgroud)
单击子项时的输出
child
parent
Run Code Online (Sandbox Code Playgroud)
欲望输出是
child
Run Code Online (Sandbox Code Playgroud)
我的意思是我只想在点击孩子时只触发孩子的onClick.
家长工作正常.单击父级时,它仅触发父级的onClick.我遇到的问题是和孩子在一起.