Skip to content

Commit 6298bef

Browse files
authored
Merge pull request yutianzuo#1 from yutianzuo/develop
new protocol
2 parents a5d2dac + de51361 commit 6298bef

File tree

26 files changed

+1097
-352
lines changed

26 files changed

+1097
-352
lines changed

app/build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@ android {
1414
applicationId "com.github.yutianzuo.nativesock"
1515
minSdkVersion 20
1616
targetSdkVersion 22
17-
versionCode 2
18-
versionName "1.1"
17+
versionCode 20
18+
versionName "2.0"
1919
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
2020
ndk {
21-
abiFilters 'armeabi-v7a', 'x86'
21+
abiFilters 'armeabi-v7a', 'x86', 'arm64-v8a'
2222
}
2323
}
2424
android {

app/src/main/AndroidManifest.xml

Lines changed: 38 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,60 @@
11
<?xml version="1.0" encoding="utf-8"?>
2-
<manifest package="com.github.yutianzuo.myapplication"
3-
xmlns:android="http://schemas.android.com/apk/res/android">
2+
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3+
package="com.github.yutianzuo.myapplication">
4+
45
<uses-permission android:name="android.permission.INTERNET" />
56
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
67
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
78

8-
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
9-
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
10-
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
11-
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
12-
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
9+
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
10+
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
11+
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
12+
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
13+
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
1314

1415

1516
<application
1617
android:allowBackup="true"
17-
android:icon="@mipmap/ic_launcher"
18+
android:icon="@mipmap/trans_icon"
1819
android:label="@string/app_name"
19-
android:roundIcon="@mipmap/ic_launcher_round"
2020
android:supportsRtl="true"
2121
android:theme="@style/AppTheme">
2222

2323
<activity android:name=".MainActivity">
2424
<intent-filter>
25-
<action android:name="android.intent.action.MAIN"/>
25+
<action android:name="android.intent.action.MAIN" />
26+
27+
<category android:name="android.intent.category.LAUNCHER" />
28+
</intent-filter>
29+
</activity>
30+
31+
<activity android:name=".DnsActivity" />
32+
<activity android:name=".DnsReleaseActivity" />
33+
<activity
34+
android:name=".SendFileActivity"
35+
android:launchMode="singleTask">
36+
<intent-filter>
37+
<action android:name="android.intent.action.SEND" />
2638

27-
<category android:name="android.intent.category.LAUNCHER"/>
39+
<category android:name="android.intent.category.DEFAULT" />
40+
41+
<data android:mimeType="*/*" />
2842
</intent-filter>
2943
</activity>
44+
<activity android:name=".RecvActivity" />
45+
<activity android:name=".WifiP2pActivity" />
46+
<activity android:name=".WifiP2pDynamicOwnerActivity" />
47+
48+
<provider
49+
android:name="androidx.core.content.FileProvider"
50+
android:authorities="${applicationId}.provider"
51+
android:exported="false"
52+
android:grantUriPermissions="true">
53+
<meta-data
54+
android:name="android.support.FILE_PROVIDER_PATHS"
55+
android:resource="@xml/file_paths" />
56+
</provider>
3057

31-
<activity android:name=".DnsActivity"/>
32-
<activity android:name=".DnsReleaseActivity"/>
33-
<activity android:name=".SendFileActivity"/>
34-
<activity android:name=".RecvActivity"/>
35-
<activity android:name=".WifiP2pActivity"/>
36-
<activity android:name=".WifiP2pDynamicOwnerActivity"/>
3758
</application>
3859

3960
</manifest>
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package com.github.yutianzuo.myapplication;
2+
3+
import android.content.Context;
4+
import android.content.Intent;
5+
import android.net.Uri;
6+
import android.os.Build;
7+
import android.util.Log;
8+
9+
import java.io.File;
10+
11+
public class FileProviderUtils {
12+
13+
public static Uri getUriForFile(Context mContext, File file) {
14+
Uri fileUri = null;
15+
if (Build.VERSION.SDK_INT >= 24) {
16+
fileUri = getUriForFile24(mContext, file);
17+
} else {
18+
fileUri = Uri.fromFile(file);
19+
}
20+
return fileUri;
21+
}
22+
23+
public static Uri getUriForFile24(Context mContext, File file) {
24+
Uri fileUri = null;
25+
try {
26+
fileUri = androidx.core.content.FileProvider.getUriForFile(mContext,
27+
BuildConfig.APPLICATION_ID + ".provider",
28+
file);
29+
} catch (Throwable e) {
30+
Log.e("FileProviderUtils", e.toString());
31+
}
32+
return fileUri;
33+
}
34+
35+
public static void setIntentDataAndType(Context mContext,
36+
Intent intent,
37+
String type,
38+
File file,
39+
boolean writeAble) {
40+
if (Build.VERSION.SDK_INT >= 24) {
41+
intent.setDataAndType(getUriForFile(mContext, file), type);
42+
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
43+
if (writeAble) {
44+
intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
45+
}
46+
} else {
47+
intent.setDataAndType(Uri.fromFile(file), type);
48+
}
49+
}
50+
}

app/src/main/java/com/github/yutianzuo/myapplication/RecvActivity.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import androidx.appcompat.app.AppCompatActivity;
88
import android.view.View;
99
import android.view.View.OnClickListener;
10+
import android.view.WindowManager;
1011
import android.widget.AdapterView;
1112
import android.widget.AdapterView.OnItemSelectedListener;
1213
import android.widget.ArrayAdapter;
@@ -34,6 +35,8 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
3435
super.onCreate(savedInstanceState);
3536
setContentView(R.layout.activity_recv);
3637

38+
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
39+
3740
mSpinner = findViewById(R.id.spinner);
3841

3942
mTvInfo = findViewById(R.id.tv_info);

app/src/main/java/com/github/yutianzuo/myapplication/SendFileActivity.java

Lines changed: 83 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,20 @@
33
import android.app.Activity;
44
import android.app.AlertDialog;
55
import android.app.Dialog;
6+
import android.content.ContentResolver;
67
import android.content.Context;
78
import android.content.Intent;
89
import android.net.Uri;
910
import android.os.Bundle;
1011
import androidx.annotation.Nullable;
1112
import androidx.appcompat.app.AppCompatActivity;
13+
import androidx.core.content.FileProvider;
14+
15+
import android.os.Environment;
1216
import android.text.TextUtils;
17+
import android.util.Log;
1318
import android.view.View;
19+
import android.view.WindowManager;
1420
import android.widget.Button;
1521
import android.widget.EditText;
1622
import android.widget.TextView;
@@ -19,6 +25,7 @@
1925
import com.github.yutianzuo.nativesock.JniDef;
2026

2127
import java.io.File;
28+
import java.io.InputStream;
2229

2330
public class SendFileActivity extends AppCompatActivity implements View.OnClickListener {
2431
public static final String IP_ADDR = "ip_addr";
@@ -29,18 +36,70 @@ public class SendFileActivity extends AppCompatActivity implements View.OnClickL
2936
static final int REQUEST_CODE = 999;
3037
String ip;
3138

39+
private File getWechatDirFile() {
40+
String dir = Environment.getExternalStorageDirectory().getAbsolutePath();
41+
dir = dir + File.separator + "tencent" + File.separator + "MicroMsg" + File.separator +
42+
"Download" + File.separator;
43+
File fHide = new File(dir);
44+
return fHide;
45+
}
46+
3247
private void browser() {
3348
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
3449
intent.setType("*/*");
3550
intent.addCategory(Intent.CATEGORY_OPENABLE);
51+
52+
// File wechat_dir = getWechatDirFile();
53+
// FileProviderUtils.setIntentDataAndType(this, intent, "*/*", wechat_dir, false);
54+
55+
3656
startActivityForResult(intent, REQUEST_CODE);
3757
}
3858

59+
private String getShareFile() {
60+
Intent intent = getIntent();
61+
Bundle extras = intent.getExtras();
62+
String action = intent.getAction();
63+
// 判断Intent是否是“分享”功能(Share Via)
64+
if (Intent.ACTION_SEND.equals(action))
65+
{
66+
if (extras.containsKey(Intent.EXTRA_STREAM))
67+
{
68+
try
69+
{
70+
// 获取资源路径Uri
71+
Uri uri = (Uri) extras.getParcelable(Intent.EXTRA_STREAM);
72+
Log.e("SnedFileActivity", "uri:" + uri.toString());
73+
74+
return PathUtils.getImageAbsolutePath(this, uri);
75+
}
76+
catch (Exception e)
77+
{
78+
Log.e(this.getClass().getName(), e.toString());
79+
}
80+
return "";
81+
82+
}
83+
else if (extras.containsKey(Intent.EXTRA_TEXT))
84+
{
85+
return "";
86+
}
87+
}
88+
return "";
89+
}
90+
91+
String mFilePath;
3992
@Override
4093
protected void onCreate(@Nullable Bundle savedInstanceState) {
4194
super.onCreate(savedInstanceState);
4295
setContentView(R.layout.activity_send);
43-
ip = getIntent().getStringExtra(IP_ADDR);
96+
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
97+
mFilePath = getShareFile();
98+
if (TextUtils.isEmpty(mFilePath)) {
99+
ip = getIntent().getStringExtra(IP_ADDR);
100+
} else {
101+
mFileSend = mFilePath;
102+
}
44103
if (TextUtils.isEmpty(ip)) {
45104
ip = "";
46105
}
@@ -51,6 +110,10 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
51110
mEtIp.setSelection(ip.length());
52111
mTvSendFile.setOnClickListener(this);
53112
mBtnSend.setOnClickListener(this);
113+
114+
if (!TextUtils.isEmpty(mFileSend)) {
115+
mTvSendFile.setText(mFileSend);
116+
}
54117
}
55118

56119
@Override
@@ -64,6 +127,15 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
64127
}
65128
}
66129

130+
void callBack(final String info) {
131+
this.runOnUiThread(new Runnable() {
132+
@Override
133+
public void run() {
134+
dlg.setTitle(info);
135+
}
136+
});
137+
}
138+
67139
@Override
68140
public void onClick(View v) {
69141
switch (v.getId()) {
@@ -91,37 +163,40 @@ private void send() {
91163
}
92164

93165
final String ip = mEtIp.getText().toString();
94-
if (TextUtils.isEmpty(ip)) {
95-
Toast.makeText(this, "请输入ip地址", Toast.LENGTH_LONG).show();
96-
return;
97-
}
166+
// if (TextUtils.isEmpty(ip)) {
167+
// Toast.makeText(this, "请输入ip地址", Toast.LENGTH_LONG).show();
168+
// return;
169+
// }
98170

99171
if (dlg == null) {
100172
dlg = new PromptDlg(this);
101173
}
102-
dlg.setTitle("传输中,进度将显示在接收设备上...");
174+
dlg.setTitle("正在计算上传文件,请稍候");
103175
dlg.setCancelable(false);
104176
dlg.setCanceledOnTouchOutside(false);
105177
dlg.show();
106178

107179
new Thread(new Runnable() {
108180
@Override
109181
public void run() {
110-
final String strRet = JniDef.sendFile(mFileSend, ip);
182+
final String strRet = JniDef.sendFile(mFileSend, ip, SendFileActivity.this);
183+
JniDef.sendFileDone();
111184
if (SendFileActivity.this.isFinishing()) {
112185
return;
113186
}
114187
SendFileActivity.this.runOnUiThread(new Runnable() {
115188
@Override
116189
public void run() {
117190
dlg.dismiss();
118-
mBtnSend.setEnabled(false);
191+
mBtnSend.setEnabled(true);
119192
mBtnSend.setText(strRet);
120193
}
121194
});
122195

123196
}
124197
}).start();
198+
199+
mBtnSend.setEnabled(false);
125200
}
126201
}
127202

app/src/main/res/layout/activity_send.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
android:layout_height="50dp"
1919
android:layout_below="@+id/tv_filesend"
2020
android:layout_marginTop="20dp"
21-
android:hint="输入目标机器ip:192.168.0.56"/>
21+
android:hint="如果不输入ip地址,将上传到云端"/>
2222

2323
<Button
2424
android:layout_marginTop="40dp"
11.5 KB
Loading
11.5 KB
Loading
11.5 KB
Loading
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
<resources>
2-
<string name="app_name">NativeSocket</string>
2+
<string name="app_name">DevNetTool</string>
33
</resources>

0 commit comments

Comments
 (0)