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.
|
||||
LOCAL_SRC_FILES := $(call all-java-files-under, src)
|
||||
|
||||
LOCAL_STATIC_ANDROID_LIBRARIES += \
|
||||
android-support-v4
|
||||
|
||||
LOCAL_PACKAGE_NAME := WiFiDirectDemo
|
||||
|
||||
LOCAL_SDK_VERSION := current
|
||||
|
||||
@@ -2,7 +2,8 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.android.wifidirect"
|
||||
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.CHANGE_WIFI_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.READ_PHONE_STATE" />
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
|
||||
|
||||
<!-- Google Play filtering -->
|
||||
<uses-feature android:name="android.hardware.wifi.direct" android:required="true"/>
|
||||
@@ -29,6 +31,16 @@
|
||||
</intent-filter>
|
||||
</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 -->
|
||||
<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.ProgressDialog;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.net.wifi.WpsInfo;
|
||||
@@ -29,7 +28,7 @@ import android.net.wifi.p2p.WifiP2pInfo;
|
||||
import android.net.wifi.p2p.WifiP2pManager.ConnectionInfoListener;
|
||||
import android.os.AsyncTask;
|
||||
import android.os.Bundle;
|
||||
import android.os.Environment;
|
||||
import android.support.v4.content.FileProvider;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
@@ -228,8 +227,8 @@ public class DeviceDetailFragment extends Fragment implements ConnectionInfoList
|
||||
Log.d(WiFiDirectActivity.TAG, "Server: Socket opened");
|
||||
Socket client = serverSocket.accept();
|
||||
Log.d(WiFiDirectActivity.TAG, "Server: connection done");
|
||||
final File f = new File(Environment.getExternalStorageDirectory() + "/"
|
||||
+ context.getPackageName() + "/wifip2pshared-" + System.currentTimeMillis()
|
||||
final File f = new File(context.getExternalFilesDir("received"),
|
||||
"wifip2pshared-" + System.currentTimeMillis()
|
||||
+ ".jpg");
|
||||
|
||||
File dirs = new File(f.getParent());
|
||||
@@ -256,9 +255,16 @@ public class DeviceDetailFragment extends Fragment implements ConnectionInfoList
|
||||
protected void onPostExecute(String result) {
|
||||
if (result != null) {
|
||||
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.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);
|
||||
}
|
||||
|
||||
|
||||
@@ -16,17 +16,20 @@
|
||||
|
||||
package com.example.android.wifidirect;
|
||||
|
||||
import android.Manifest;
|
||||
import android.app.Activity;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.net.wifi.p2p.WifiP2pConfig;
|
||||
import android.net.wifi.p2p.WifiP2pDevice;
|
||||
import android.net.wifi.p2p.WifiP2pManager;
|
||||
import android.net.wifi.p2p.WifiP2pManager.ActionListener;
|
||||
import android.net.wifi.p2p.WifiP2pManager.Channel;
|
||||
import android.net.wifi.p2p.WifiP2pManager.ChannelListener;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.provider.Settings;
|
||||
import android.util.Log;
|
||||
@@ -48,6 +51,9 @@ import com.example.android.wifidirect.DeviceListFragment.DeviceActionListener;
|
||||
public class WiFiDirectActivity extends Activity implements ChannelListener, DeviceActionListener {
|
||||
|
||||
public static final String TAG = "wifidirectdemo";
|
||||
|
||||
private static final int PERMISSIONS_REQUEST_CODE_ACCESS_COARSE_LOCATION = 1001;
|
||||
|
||||
private WifiP2pManager manager;
|
||||
private boolean isWifiP2pEnabled = false;
|
||||
private boolean retryChannel = false;
|
||||
@@ -63,6 +69,19 @@ public class WiFiDirectActivity extends Activity implements ChannelListener, Dev
|
||||
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
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
@@ -77,6 +96,15 @@ public class WiFiDirectActivity extends Activity implements ChannelListener, Dev
|
||||
|
||||
manager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
|
||||
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 */
|
||||
|
||||
Reference in New Issue
Block a user