Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,11 @@

OCS Inventory NG Android Agent
Web site : https://ocsinventory-ng.org/

# Build
`bash gradlew assembleLegacy`
## Possible targets:
- clean
- assembleLegacy (for Android 9)
- assembleModern (Android X)
- assembleModernDebug
85 changes: 80 additions & 5 deletions app/build.gradle
Original file line number Diff line number Diff line change
@@ -1,28 +1,103 @@
/*
# Build legacy version (Android 8 / API 26)
bash gradlew clean assembleLegacyDebug

# Build modern version (Android 14 / API 34 with AndroidX)
bash gradlew clean assembleModernDebug
*/
apply plugin: 'com.android.application'

android {
compileSdkVersion 26
buildToolsVersion '26.0.3'
namespace "org.ocs.android.agent"

// compileSdkVersion is set per flavor below
useLibrary 'org.apache.http.legacy'

defaultConfig {
applicationId "org.ocs.android.agent"
minSdkVersion 26
minSdkVersion 19
targetSdkVersion 26
versionCode 27
versionName "2.7"
}

compileOptions {
// Use Java 17 if your Android Gradle Plugin (AGP) >= 7.3
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}

buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
debug {
applicationIdSuffix ".debug"
versionNameSuffix "-debug"
}
}

// Define two build flavors: legacy (Android 8) and modern (Android 14)
flavorDimensions "mode"

productFlavors {
// -------- Legacy flavor: Android O (API 26) --------
legacy {
dimension "mode"
compileSdkVersion 26
targetSdkVersion 26
minSdkVersion 26 // old devices supported
resValue "string", "build_mode", "Legacy (Android 8)"
applicationIdSuffix ".legacy"
}

// -------- Modern flavor: Android 14 (API 34, AndroidX) --------
modern {
dimension "mode"
compileSdkVersion 34
targetSdkVersion 34
//minSdkVersion 19 // must be at least 19 for Material 1.12.0
minSdkVersion 21
resValue "string", "build_mode", "Modern (Android 14)"
applicationIdSuffix ".modern"
}
}

lint {
abortOnError false // Don’t stop the build because of AndroidX warnings
}
}

dependencies {
implementation 'com.android.support:support-v4:26.1.0'
implementation 'com.android.support:appcompat-v7:26.1.0'
// ==========================================================
// 📦 Flavor-specific dependencies
// ==========================================================
// Common dependencies (AndroidX)
/*
implementation 'androidx.appcompat:appcompat:1.7.0'
implementation 'androidx.core:core-ktx:1.13.1'
implementation 'com.google.android.material:material:1.5.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
*/
// Legacy build → pre-AndroidX libraries
legacyImplementation('com.android.support:support-v4:26.1.0') {
exclude group: 'androidx.appcompat'
exclude group: 'androidx.core'
exclude group: 'androidx.vectordrawable'
}

legacyImplementation ('com.android.support:appcompat-v7:26.1.0') {
exclude group: 'androidx.appcompat'
exclude group: 'androidx.core'
exclude group: 'androidx.vectordrawable'
}
legacyImplementation 'com.google.android.material:material:1.5.0'
modernImplementation 'com.google.android.material:material:1.12.0'

// Modern build → AndroidX libraries
//modernImplementation 'androidx.core:core-ktx:1.13.1'
modernImplementation 'androidx.appcompat:appcompat:1.7.0'
modernImplementation 'com.google.android.material:material:1.12.0'
}

9 changes: 5 additions & 4 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
-->
<manifest package="org.ocs.android.agent"
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
android:installLocation="auto"
android:versionCode="270"
Expand All @@ -37,9 +37,6 @@
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>


<application
android:allowBackup="true"
Expand All @@ -49,6 +46,7 @@
android:theme="@style/Theme.AppCompat.Light.DarkActionBar">
<activity
android:name="org.ocs.android.agent.activity.OCSAgentActivity"
android:exported="true"
android:label="@string/app_name"
android:process=":ocs_process">
<intent-filter>
Expand All @@ -58,6 +56,7 @@
</activity>
<activity
android:name="org.ocs.android.agent.activity.OCSInstallPackageActivity"

android:label="@string/title_activity_ocslaunch"
android:process=":ocs_process">
</activity>
Expand Down Expand Up @@ -96,6 +95,7 @@
</receiver>
<receiver
android:name="org.ocs.android.agent.receiver.OCSBootReceiver"
android:exported="false"
android:process=":ocs_process">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
Expand All @@ -104,6 +104,7 @@
</receiver>
<receiver
android:name="org.ocs.android.agent.receiver.OCSInstallReceiver"
android:exported="true"
android:process=":ocs_process">
<intent-filter android:priority="10000">
<action android:name="android.intent.action.PACKAGE_ADDED"/>
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/java/org/ocs/android/actions/Inventory.java
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ private void buildInventory(Context ctx) {
SystemInfos.initSystemInfos();

ocslog.debug("OCSBios...");
bios = new OCSBios(mCtx);
bios = new OCSBios();
ocslog.debug("hardware...");
hardware = new OCSHardware();
String sid = Secure.getString(mCtx.getContentResolver(), Secure.ANDROID_ID);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
*/
package org.ocs.android.agent.activity;

import android.Manifest;
import android.app.ProgressDialog;
import android.content.Intent;
import android.content.SharedPreferences;
Expand All @@ -31,9 +30,9 @@
import android.os.Environment;
import android.preference.PreferenceManager;
import android.provider.Settings.Secure;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.appcompat.app.AppCompatActivity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
Expand Down Expand Up @@ -166,7 +165,7 @@ public boolean onCreateOptionsMenu(Menu menu) {

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
/*switch (item.getItemId()) {
case R.id.menu_settings:
startActivity(new Intent(this, OCSPrefsActivity.class));
break;
Expand All @@ -182,6 +181,17 @@ public boolean onOptionsItemSelected(MenuItem item) {
break;
default:
break;
}*/
int id = item.getItemId();
if (id == R.id.menu_settings)
startActivity(new Intent(this, OCSPrefsActivity.class));
else if (id == R.id.menu_export)
exportConfig();
else if (id == R.id.menu_import)
importConfig();
else if (id == R.id.menu_about) {
AboutDialog about = new AboutDialog(this);
about.show();
}
return true;
}
Expand Down Expand Up @@ -259,28 +269,29 @@ private void setStatus(String msg) {

private boolean checkAndRequestPermissions() {
// Check permissions
String[] ocsPermissions = new String[]{
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.CAMERA,
Manifest.permission.READ_PHONE_STATE,
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION};

List<String> permissionNeeded = new ArrayList<>();
for (String permission:ocsPermissions) {
if (ContextCompat.checkSelfPermission(this, permission) != PackageManager.PERMISSION_GRANTED){
permissionNeeded.add(permission);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
String[] ocsPermissions = new String[]{
android.Manifest.permission.READ_EXTERNAL_STORAGE,
android.Manifest.permission.CAMERA,
android.Manifest.permission.READ_PHONE_STATE};

List<String> permissionNeeded = new ArrayList<>();
for (String permission:ocsPermissions) {
if (ContextCompat.checkSelfPermission(this, permission) != PackageManager.PERMISSION_GRANTED){
permissionNeeded.add(permission);
}
}
}

if (!permissionNeeded.isEmpty()) {
requestPermissions(permissionNeeded.toArray(new String[permissionNeeded.size()]), REQUEST_PERMISSION_CODE);
}
if (!permissionNeeded.isEmpty()) {
requestPermissions(permissionNeeded.toArray(new String[permissionNeeded.size()]), REQUEST_PERMISSION_CODE);
}

for (String permission:ocsPermissions) {
if (ContextCompat.checkSelfPermission(this, permission) != PackageManager.PERMISSION_GRANTED){
return false;
for (String permission:ocsPermissions) {
if (ContextCompat.checkSelfPermission(this, permission) != PackageManager.PERMISSION_GRANTED){
return false;
}
}

}

return true;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import androidx.appcompat.app.AppCompatActivity;
import android.widget.TextView;

import org.ocs.android.actions.OCSLog;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@
package org.ocs.android.agent.activity;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import android.widget.ExpandableListAdapter;
import android.widget.ExpandableListView;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
import android.os.AsyncTask;
import android.os.Binder;
import android.os.IBinder;
import android.support.v4.app.NotificationCompat;
import androidx.core.app.NotificationCompat;

import org.ocs.android.actions.Inventory;
import org.ocs.android.actions.OCSFiles;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
import android.os.AsyncTask;
import android.os.Binder;
import android.os.IBinder;
import android.support.v4.app.NotificationCompat;
import androidx.core.app.NotificationCompat;

import org.ocs.android.actions.OCSFiles;
import org.ocs.android.actions.OCSLog;
Expand Down
14 changes: 4 additions & 10 deletions app/src/main/java/org/ocs/android/sections/OCSBios.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,7 @@
*/
package org.ocs.android.sections;

import android.Manifest;
import android.content.Context;
import android.content.pm.PackageManager;
import android.os.Build;
import android.support.v4.app.ActivityCompat;
import android.text.format.DateFormat;

import org.ocs.android.actions.OCSLog;
Expand Down Expand Up @@ -60,19 +56,17 @@ public class OCSBios implements OCSSectionInterface {
private String type;
private String smodel;

public OCSBios(Context mCtx) {
public OCSBios() {
type = "Mobile";
OCSLog ocslog = OCSLog.getInstance();
assettag = Build.ID + "-0123456789";
date = (String) DateFormat.format("MM/dd/yy", Build.TIME);
manufacturer = Build.MANUFACTURER;
version = Build.BOOTLOADER;
ocslog.debug("BIOS version: " + version);
try {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
serial = Build.getSerial();
}
} catch (SecurityException e) {
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.FROYO) {
serial = Build.SERIAL;
} else {
serial = SystemInfos.getInstance().getSerial();
}
ocslog.debug("OCSBIOS serial " + serial);
Expand Down
8 changes: 5 additions & 3 deletions app/src/main/java/org/ocs/android/sections/OCSNetworks.java
Original file line number Diff line number Diff line change
Expand Up @@ -103,9 +103,11 @@ public OCSNetworks(Context ctx) {
OCSNetwork netw = new OCSNetwork(name);
netw.setIpAdress(ipAdr.getHostAddress());

try {
netw.setMacaddr(Utils.bytesToHex(ni.getHardwareAddress()));
} catch (SocketException ignored) {
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.FROYO) {
try {
netw.setMacaddr(Utils.bytesToHex(ni.getHardwareAddress()));
} catch (SocketException se) {
}
}
// this ip may be already presents as a wifi address
boolean isWifi = false;
Expand Down
24 changes: 18 additions & 6 deletions app/src/main/java/org/ocs/android/sections/OCSSims.java
Original file line number Diff line number Diff line change
Expand Up @@ -44,12 +44,24 @@ public OCSSims(Context ctx) {
if (mng == null) {
ocslog.error("TelephonyManager information not found");
} else {
device_id = mng.getDeviceId();
simcountry = mng.getSimCountryIso();
simoperator = mng.getSimOperator();
simopname = mng.getSimOperatorName();
simserial = mng.getSimSerialNumber();
phonenumber = mng.getLine1Number();
// device_id = mng.getDeviceId();
/*if (ActivityCompat.checkSelfPermission(context, Manifest.permission.READ_PHONE_STATE)
== PackageManager.PERMISSION_GRANTED) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
device_id = mng.getImei(); // API 26+
} else {
device_id = mng.getDeviceId();
*/ /* simcountry = mng.getSimCountryIso();
simoperator = mng.getSimOperator();
simopname = mng.getSimOperatorName();
simserial = mng.getSimSerialNumber();
phonenumber = mng.getLine1Number();
*/
/* }
} else {
device_id = "unknown";
}*/

ocslog.debug("device_id : " + device_id);
}
}
Expand Down
Loading