Я нашел много ответов об этом, но все они написаны с устаревшими функциями или не работают в моем случае.
Мне нужно получить номер IMEI (уникальный идентификатор устройства) мобильного устройства, на котором будет установлено мое приложение, а затем отправить это значение (в виде строки) в файл php, расположенный в папке, которую я создал в моем веб-сайт (потому что у приложения есть веб-просмотр, где я визуализирую этот веб-сайт и хочу сохранить IMEI в базе данных).
Пока что я получил это в своем коде:
public void postData() {
// Create a new HttpClient and Post Header
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://www.chapatelo.hol.es/php/postIMEI.php");
TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
try {
// Add your data
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
nameValuePairs.add(new BasicNameValuePair("IMEI", telephonyManager.getDeviceId()));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
} catch (IOException e) {
// TODO Auto-generated catch block
}
}
и я имею <uses-permission android:name="android.permission.INTERNET"/>
а также <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
в манифесте.
И это файл php:
<?php
require_once("conexion.php");
if(!isset($_SESSION)){
session_start();
}
$imei = $_POST["IMEI"];
$query1 = "SELECT * FROM usuarios WHERE imei = '$imei'";
if($resp1 = mysqli_query($conexion, $query1)){
if(mysqli_num_rows($resp1) == 0){
$query2 = "INSERT INTO usuarios (imei) VALUES ('$imei')";
if(mysqli_query($conexion, $query2)){
$_SESSION["imei"] = $imei;
echo true;
}else{
echo "error de conexión";
}
}else{
echo "Ya existe el imei en la db";
}
}else{
echo "error de conexión";
}
mysqli_close($conexion);
?>
Однако, не говоря уже о том, что почти каждая функция, такая как httpclient
не рекомендуется, ничего из этого не работает.
Я дал разрешения 755 (чтение и выполнение) для папки php и файла, к которому я обращаюсь через мое приложение, но ничего не происходит …
Есть ли какая-либо «новая версия» тех функций, которые я использую, чтобы получить imei и затем отправить его в файл php?
Из-за устаревших функций мое приложение не сохраняет imei в базе данных?
Вы можете сослаться на это, может помочь вам
Джава
public void executeHttpGet() throws Exception {
BufferedReader in = null;
try {
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet();
request.setURI(new URI("http://testsite.com/" +
"imei_script.php?imei=" + telManager.getDeviceId()
));
HttpResponse response = client.execute(request);
in = new BufferedReader
(new InputStreamReader(response.getEntity().getContent()));
StringBuffer sb = new StringBuffer("");
String line = "";
String NL = System.getProperty("line.separator");
while ((line = in.readLine()) != null) {
sb.append(line + NL);
}
in.close();
String page = sb.toString();
System.out.println(page);
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
PHP
<?php
// to return plain text
header("Content-Type: plain/text");
$imei = $_GET["imei"];
$file=fopen("imei.txt","r") or exit("Unable to open file!");
while(!feof($file))
{
if ($imei==chop(fgets($file)))
echo "True";
}
fclose($file);
?>
Других решений пока нет …