Merge changes I0f7e3578,Ie50dd642
* changes: WiFiDirectDemo: fix no peer in list after m-release WiFiDirectDemo: fix broken sample code
This commit is contained in:
@@ -6,6 +6,9 @@ LOCAL_MODULE_TAGS := samples
|
|||||||
# Only compile source java files in this apk.
|
# Only compile source java files in this apk.
|
||||||
LOCAL_SRC_FILES := $(call all-java-files-under, src)
|
LOCAL_SRC_FILES := $(call all-java-files-under, src)
|
||||||
|
|
||||||
|
LOCAL_STATIC_ANDROID_LIBRARIES += \
|
||||||
|
android-support-v4
|
||||||
|
|
||||||
LOCAL_PACKAGE_NAME := WiFiDirectDemo
|
LOCAL_PACKAGE_NAME := WiFiDirectDemo
|
||||||
|
|
||||||
LOCAL_SDK_VERSION := current
|
LOCAL_SDK_VERSION := current
|
||||||
|
|||||||
@@ -2,7 +2,8 @@
|
|||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.android.wifidirect"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.android.wifidirect"
|
||||||
android:versionCode="1" android:versionName="1.0">
|
android:versionCode="1" android:versionName="1.0">
|
||||||
|
|
||||||
<uses-sdk android:minSdkVersion="14" />
|
<!-- runtime permission check API is on Android 6.0 or higher -->
|
||||||
|
<uses-sdk android:minSdkVersion="23" />
|
||||||
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
|
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
|
||||||
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
|
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
|
||||||
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
|
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
|
||||||
@@ -10,6 +11,7 @@
|
|||||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||||
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
|
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
|
||||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||||
|
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
|
||||||
|
|
||||||
<!-- Google Play filtering -->
|
<!-- Google Play filtering -->
|
||||||
<uses-feature android:name="android.hardware.wifi.direct" android:required="true"/>
|
<uses-feature android:name="android.hardware.wifi.direct" android:required="true"/>
|
||||||
@@ -29,6 +31,16 @@
|
|||||||
</intent-filter>
|
</intent-filter>
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
|
<provider
|
||||||
|
android:name="android.support.v4.content.FileProvider"
|
||||||
|
android:authorities="com.example.android.wifidirect.fileprovider"
|
||||||
|
android:exported="false"
|
||||||
|
android:grantUriPermissions="true">
|
||||||
|
<meta-data
|
||||||
|
android:name="android.support.FILE_PROVIDER_PATHS"
|
||||||
|
android:resource="@xml/provider_paths" />
|
||||||
|
</provider>
|
||||||
|
|
||||||
<!-- Used for transferring files after a successful connection -->
|
<!-- Used for transferring files after a successful connection -->
|
||||||
<service android:enabled="true" android:name=".FileTransferService" />
|
<service android:enabled="true" android:name=".FileTransferService" />
|
||||||
|
|
||||||
|
|||||||
4
samples/WiFiDirectDemo/res/xml/provider_paths.xml
Normal file
4
samples/WiFiDirectDemo/res/xml/provider_paths.xml
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<paths xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<external-files-path name="received" path="received"/>
|
||||||
|
</paths>
|
||||||
@@ -19,7 +19,6 @@ package com.example.android.wifidirect;
|
|||||||
import android.app.Fragment;
|
import android.app.Fragment;
|
||||||
import android.app.ProgressDialog;
|
import android.app.ProgressDialog;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.DialogInterface;
|
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.net.wifi.WpsInfo;
|
import android.net.wifi.WpsInfo;
|
||||||
@@ -29,7 +28,7 @@ import android.net.wifi.p2p.WifiP2pInfo;
|
|||||||
import android.net.wifi.p2p.WifiP2pManager.ConnectionInfoListener;
|
import android.net.wifi.p2p.WifiP2pManager.ConnectionInfoListener;
|
||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Environment;
|
import android.support.v4.content.FileProvider;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
@@ -228,8 +227,8 @@ public class DeviceDetailFragment extends Fragment implements ConnectionInfoList
|
|||||||
Log.d(WiFiDirectActivity.TAG, "Server: Socket opened");
|
Log.d(WiFiDirectActivity.TAG, "Server: Socket opened");
|
||||||
Socket client = serverSocket.accept();
|
Socket client = serverSocket.accept();
|
||||||
Log.d(WiFiDirectActivity.TAG, "Server: connection done");
|
Log.d(WiFiDirectActivity.TAG, "Server: connection done");
|
||||||
final File f = new File(Environment.getExternalStorageDirectory() + "/"
|
final File f = new File(context.getExternalFilesDir("received"),
|
||||||
+ context.getPackageName() + "/wifip2pshared-" + System.currentTimeMillis()
|
"wifip2pshared-" + System.currentTimeMillis()
|
||||||
+ ".jpg");
|
+ ".jpg");
|
||||||
|
|
||||||
File dirs = new File(f.getParent());
|
File dirs = new File(f.getParent());
|
||||||
@@ -256,9 +255,16 @@ public class DeviceDetailFragment extends Fragment implements ConnectionInfoList
|
|||||||
protected void onPostExecute(String result) {
|
protected void onPostExecute(String result) {
|
||||||
if (result != null) {
|
if (result != null) {
|
||||||
statusText.setText("File copied - " + result);
|
statusText.setText("File copied - " + result);
|
||||||
|
|
||||||
|
File recvFile = new File(result);
|
||||||
|
Uri fileUri = FileProvider.getUriForFile(
|
||||||
|
context,
|
||||||
|
"com.example.android.wifidirect.fileprovider",
|
||||||
|
recvFile);
|
||||||
Intent intent = new Intent();
|
Intent intent = new Intent();
|
||||||
intent.setAction(android.content.Intent.ACTION_VIEW);
|
intent.setAction(android.content.Intent.ACTION_VIEW);
|
||||||
intent.setDataAndType(Uri.parse("file://" + result), "image/*");
|
intent.setDataAndType(fileUri, "image/*");
|
||||||
|
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
||||||
context.startActivity(intent);
|
context.startActivity(intent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -16,17 +16,20 @@
|
|||||||
|
|
||||||
package com.example.android.wifidirect;
|
package com.example.android.wifidirect;
|
||||||
|
|
||||||
|
import android.Manifest;
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.BroadcastReceiver;
|
import android.content.BroadcastReceiver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.IntentFilter;
|
import android.content.IntentFilter;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
import android.net.wifi.p2p.WifiP2pConfig;
|
import android.net.wifi.p2p.WifiP2pConfig;
|
||||||
import android.net.wifi.p2p.WifiP2pDevice;
|
import android.net.wifi.p2p.WifiP2pDevice;
|
||||||
import android.net.wifi.p2p.WifiP2pManager;
|
import android.net.wifi.p2p.WifiP2pManager;
|
||||||
import android.net.wifi.p2p.WifiP2pManager.ActionListener;
|
import android.net.wifi.p2p.WifiP2pManager.ActionListener;
|
||||||
import android.net.wifi.p2p.WifiP2pManager.Channel;
|
import android.net.wifi.p2p.WifiP2pManager.Channel;
|
||||||
import android.net.wifi.p2p.WifiP2pManager.ChannelListener;
|
import android.net.wifi.p2p.WifiP2pManager.ChannelListener;
|
||||||
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
@@ -48,6 +51,9 @@ import com.example.android.wifidirect.DeviceListFragment.DeviceActionListener;
|
|||||||
public class WiFiDirectActivity extends Activity implements ChannelListener, DeviceActionListener {
|
public class WiFiDirectActivity extends Activity implements ChannelListener, DeviceActionListener {
|
||||||
|
|
||||||
public static final String TAG = "wifidirectdemo";
|
public static final String TAG = "wifidirectdemo";
|
||||||
|
|
||||||
|
private static final int PERMISSIONS_REQUEST_CODE_ACCESS_COARSE_LOCATION = 1001;
|
||||||
|
|
||||||
private WifiP2pManager manager;
|
private WifiP2pManager manager;
|
||||||
private boolean isWifiP2pEnabled = false;
|
private boolean isWifiP2pEnabled = false;
|
||||||
private boolean retryChannel = false;
|
private boolean retryChannel = false;
|
||||||
@@ -63,6 +69,19 @@ public class WiFiDirectActivity extends Activity implements ChannelListener, Dev
|
|||||||
this.isWifiP2pEnabled = isWifiP2pEnabled;
|
this.isWifiP2pEnabled = isWifiP2pEnabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onRequestPermissionsResult(int requestCode, String[] permissions,
|
||||||
|
int[] grantResults) {
|
||||||
|
switch (requestCode) {
|
||||||
|
case PERMISSIONS_REQUEST_CODE_ACCESS_COARSE_LOCATION:
|
||||||
|
if (grantResults[0] != PackageManager.PERMISSION_GRANTED) {
|
||||||
|
Log.e(TAG, "Coarse location permission is not granted!");
|
||||||
|
finish();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
@@ -77,6 +96,15 @@ public class WiFiDirectActivity extends Activity implements ChannelListener, Dev
|
|||||||
|
|
||||||
manager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
|
manager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
|
||||||
channel = manager.initialize(this, getMainLooper(), null);
|
channel = manager.initialize(this, getMainLooper(), null);
|
||||||
|
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
|
||||||
|
&& checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION)
|
||||||
|
!= PackageManager.PERMISSION_GRANTED) {
|
||||||
|
requestPermissions(new String[]{Manifest.permission.ACCESS_COARSE_LOCATION},
|
||||||
|
WiFiDirectActivity.PERMISSIONS_REQUEST_CODE_ACCESS_COARSE_LOCATION);
|
||||||
|
// After this point you wait for callback in
|
||||||
|
// onRequestPermissionsResult(int, String[], int[]) overridden method
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** register the BroadcastReceiver with the intent values to be matched */
|
/** register the BroadcastReceiver with the intent values to be matched */
|
||||||
|
|||||||
Reference in New Issue
Block a user