first commit
This commit is contained in:
parent
3744f47122
commit
d20e335071
|
@ -3,11 +3,11 @@ plugins {
|
||||||
}
|
}
|
||||||
|
|
||||||
android {
|
android {
|
||||||
namespace 'pink.yuv.android_id'
|
namespace 'com.psmreborn.pkgj'
|
||||||
compileSdk 10
|
compileSdk 10
|
||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
applicationId "pink.yuv.android_id"
|
applicationId "com.psmreborn.pkgj"
|
||||||
minSdk 10
|
minSdk 10
|
||||||
//noinspection ExpiredTargetSdkVersion dont care about google play
|
//noinspection ExpiredTargetSdkVersion dont care about google play
|
||||||
targetSdk 10
|
targetSdk 10
|
||||||
|
@ -18,7 +18,6 @@ android {
|
||||||
buildTypes {
|
buildTypes {
|
||||||
release {
|
release {
|
||||||
minifyEnabled false
|
minifyEnabled false
|
||||||
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
compileOptions {
|
compileOptions {
|
||||||
|
|
|
@ -1,21 +0,0 @@
|
||||||
# Add project specific ProGuard rules here.
|
|
||||||
# You can control the set of applied configuration files using the
|
|
||||||
# proguardFiles setting in build.gradle.
|
|
||||||
#
|
|
||||||
# For more details, see
|
|
||||||
# http://developer.android.com/guide/developing/tools/proguard.html
|
|
||||||
|
|
||||||
# If your project uses WebView with JS, uncomment the following
|
|
||||||
# and specify the fully qualified class name to the JavaScript interface
|
|
||||||
# class:
|
|
||||||
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
|
|
||||||
# public *;
|
|
||||||
#}
|
|
||||||
|
|
||||||
# Uncomment this to preserve the line number information for
|
|
||||||
# debugging stack traces.
|
|
||||||
#-keepattributes SourceFile,LineNumberTable
|
|
||||||
|
|
||||||
# If you keep the line number information, uncomment this to
|
|
||||||
# hide the original source file name.
|
|
||||||
#-renamesourcefileattribute SourceFile
|
|
|
@ -1,8 +1,9 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:tools="http://schemas.android.com/tools">
|
xmlns:tools="http://schemas.android.com/tools">
|
||||||
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
|
<uses-permission android:name="android.permission.INTERNET"/>
|
||||||
<uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE" />
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
||||||
|
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
|
||||||
<application
|
<application
|
||||||
android:allowBackup="true"
|
android:allowBackup="true"
|
||||||
android:icon="@drawable/app_icon"
|
android:icon="@drawable/app_icon"
|
||||||
|
|
|
@ -0,0 +1,44 @@
|
||||||
|
package com.psmreborn.pkgj;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
|
public class Game {
|
||||||
|
private String titleId;
|
||||||
|
private String title;
|
||||||
|
private String downloadUrl;
|
||||||
|
private String zRIF;
|
||||||
|
|
||||||
|
public String getTitleId() {
|
||||||
|
return this.titleId;
|
||||||
|
}
|
||||||
|
public String getTitle() {
|
||||||
|
return this.title;
|
||||||
|
}
|
||||||
|
public String getDownloadUrl() {
|
||||||
|
return this.downloadUrl;
|
||||||
|
}
|
||||||
|
public String getZrif(){
|
||||||
|
return this.zRIF;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPkgFilename() {
|
||||||
|
return new File(this.getDownloadUrl()).getName();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Byte[] getFakeRif() {
|
||||||
|
// todo: decode zrif
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return title;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Game(String titleId, String title, String downloadUrl, String zRIF){
|
||||||
|
this.titleId = titleId;
|
||||||
|
this.title = title;
|
||||||
|
this.downloadUrl = downloadUrl;
|
||||||
|
this.zRIF = zRIF;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,48 @@
|
||||||
|
package com.psmreborn.pkgj;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.view.View;
|
||||||
|
import android.widget.AdapterView;
|
||||||
|
import android.widget.ArrayAdapter;
|
||||||
|
import android.widget.ListView;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
|
||||||
|
public class MainActivity extends Activity {
|
||||||
|
private ArrayAdapter<Game> titleAdapter;
|
||||||
|
private ArrayList<Game> games = null;
|
||||||
|
|
||||||
|
public void addGame(Game game){
|
||||||
|
this.games.add(game);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void updateGames(){
|
||||||
|
this.titleAdapter.notifyDataSetChanged();
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
setContentView(R.layout.activity_main);
|
||||||
|
|
||||||
|
this.games = new ArrayList<Game>();
|
||||||
|
|
||||||
|
titleAdapter = new ArrayAdapter<Game>(this.getApplicationContext(), R.layout.list_item, R.id.list_content, this.games);
|
||||||
|
ListView lstView = (ListView)this.findViewById(R.id.gameList);
|
||||||
|
lstView.setAdapter(titleAdapter);
|
||||||
|
|
||||||
|
(new NoPayStationParser(this, false)).execute();
|
||||||
|
|
||||||
|
lstView.setOnItemClickListener(new AdapterView.OnItemClickListener(){
|
||||||
|
@Override
|
||||||
|
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
|
||||||
|
Game item = (Game)adapterView.getItemAtPosition(i);
|
||||||
|
(new PsmGameDownloader(MainActivity.this, item)).execute();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,118 @@
|
||||||
|
package com.psmreborn.pkgj;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.app.AlertDialog;
|
||||||
|
import android.app.ProgressDialog;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.os.AsyncTask;
|
||||||
|
|
||||||
|
import java.io.BufferedInputStream;
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.FileReader;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.net.URLConnection;
|
||||||
|
|
||||||
|
public class NoPayStationParser extends AsyncTask<Void, Void, Void> {
|
||||||
|
private boolean wasError = false;
|
||||||
|
private String errorMsg = "";
|
||||||
|
private Context ctx = null;
|
||||||
|
private ProgressDialog dialog = null;
|
||||||
|
private File psmGamesFile = null;
|
||||||
|
private boolean forceRefresh = false;
|
||||||
|
public NoPayStationParser(Context context, boolean refresh){
|
||||||
|
this.ctx = context;
|
||||||
|
this.psmGamesFile = new File(ctx.getFilesDir(), "PSM_GAMES.tsv");
|
||||||
|
this.forceRefresh = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private void download() throws IOException {
|
||||||
|
if(psmGamesFile.exists() && !forceRefresh) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
URL url = new URL("http://nopaystation.com/tsv/PSM_GAMES.tsv");
|
||||||
|
URLConnection connection = url.openConnection();
|
||||||
|
connection.connect();
|
||||||
|
|
||||||
|
InputStream input = new BufferedInputStream(url.openStream(), 8192);
|
||||||
|
OutputStream output = new FileOutputStream(this.psmGamesFile);
|
||||||
|
|
||||||
|
StrUtil.copyTo(input, output);
|
||||||
|
output.close();
|
||||||
|
input.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void parse() throws IOException {
|
||||||
|
BufferedReader tsvReader = new BufferedReader(new FileReader(this.psmGamesFile));
|
||||||
|
tsvReader.readLine(); // skip the first line
|
||||||
|
|
||||||
|
String line = tsvReader.readLine();
|
||||||
|
while(line != null) {
|
||||||
|
|
||||||
|
String[] values = line.split("\t");
|
||||||
|
|
||||||
|
if(values.length >= 4){
|
||||||
|
String titleId = values[0];
|
||||||
|
String title = values[2];
|
||||||
|
String downloadUrl = values[3];
|
||||||
|
String zRif = values[4];
|
||||||
|
|
||||||
|
if(!title.contains("[Unity]") && !zRif.equals("MISSING")){
|
||||||
|
((MainActivity)ctx).addGame(new Game(titleId, title, downloadUrl, zRif));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
line = tsvReader.readLine();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onPreExecute() {
|
||||||
|
dialog = new ProgressDialog(ctx);
|
||||||
|
dialog.setTitle("Refreshing Items...");
|
||||||
|
dialog.setMessage("Downloading index ...");
|
||||||
|
dialog.setIndeterminate(true);
|
||||||
|
dialog.setCancelable(false);
|
||||||
|
dialog.show();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Void doInBackground(Void... voids) {
|
||||||
|
|
||||||
|
try {
|
||||||
|
download();
|
||||||
|
parse();
|
||||||
|
}
|
||||||
|
catch(Exception e){
|
||||||
|
this.wasError = true;
|
||||||
|
this.errorMsg = e.toString();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onPostExecute(Void result) {
|
||||||
|
dialog.dismiss();
|
||||||
|
((MainActivity)ctx).updateGames();
|
||||||
|
|
||||||
|
if(wasError) {
|
||||||
|
new AlertDialog.Builder((Activity)ctx)
|
||||||
|
.setTitle("Error Obtaining PSM_GAMES.TSV..")
|
||||||
|
.setMessage(this.errorMsg)
|
||||||
|
.setCancelable(false)
|
||||||
|
.setPositiveButton("OK",null).show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,105 @@
|
||||||
|
package com.psmreborn.pkgj;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.app.AlertDialog;
|
||||||
|
import android.app.ProgressDialog;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.os.AsyncTask;
|
||||||
|
import android.os.Environment;
|
||||||
|
|
||||||
|
import java.io.BufferedInputStream;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.net.URLConnection;
|
||||||
|
|
||||||
|
public class PsmGameDownloader extends AsyncTask<Void, Void, Void> {
|
||||||
|
private boolean wasError = false;
|
||||||
|
private String errorMsg = "";
|
||||||
|
private Context ctx = null;
|
||||||
|
private File psmApplicationsFolder = null;
|
||||||
|
|
||||||
|
private ProgressDialog dialog = null;
|
||||||
|
private Game gameDownloading = null;
|
||||||
|
|
||||||
|
public PsmGameDownloader(Context context, Game downloadGame){
|
||||||
|
this.ctx = context;
|
||||||
|
|
||||||
|
this.gameDownloading = downloadGame;
|
||||||
|
|
||||||
|
// get psm data folder ...
|
||||||
|
this.psmApplicationsFolder = new File(new File(new File(new File(new File(Environment.getExternalStorageDirectory(), "Android"), "data"), "com.playstation.psstore"), "files"), "psm");
|
||||||
|
this.psmApplicationsFolder.mkdirs();
|
||||||
|
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
protected void onPreExecute() {
|
||||||
|
dialog = new ProgressDialog(ctx);
|
||||||
|
dialog.setTitle("Downloading: "+gameDownloading.getPkgFilename());
|
||||||
|
dialog.setMessage(gameDownloading.getTitle());
|
||||||
|
dialog.setIndeterminate(false);
|
||||||
|
dialog.setMax(100);
|
||||||
|
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
|
||||||
|
dialog.setCancelable(false);
|
||||||
|
dialog.show();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void download() throws IOException {
|
||||||
|
URL url = new URL(gameDownloading.getDownloadUrl());
|
||||||
|
URLConnection connection = url.openConnection();
|
||||||
|
connection.connect();
|
||||||
|
|
||||||
|
InputStream input = new BufferedInputStream(url.openStream(), 8192);
|
||||||
|
OutputStream output = new FileOutputStream(new File(this.psmApplicationsFolder, gameDownloading.getPkgFilename()));
|
||||||
|
|
||||||
|
int fileLength = connection.getContentLength();
|
||||||
|
|
||||||
|
byte[] data = new byte[8192];
|
||||||
|
|
||||||
|
int count = 0;
|
||||||
|
long total = 0;
|
||||||
|
|
||||||
|
while ((count = input.read(data)) != -1) {
|
||||||
|
total += count;
|
||||||
|
dialog.setProgress((int) ((total * 100) / fileLength));
|
||||||
|
output.write(data, 0, count);
|
||||||
|
}
|
||||||
|
|
||||||
|
// flushing output
|
||||||
|
output.flush();
|
||||||
|
output.close();
|
||||||
|
input.close();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Void doInBackground(Void... voids) {
|
||||||
|
try{
|
||||||
|
download();
|
||||||
|
// TODO: extract pkg, extract zrif
|
||||||
|
}
|
||||||
|
catch (Exception e){
|
||||||
|
this.wasError = true;
|
||||||
|
this.errorMsg = e.toString();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onPostExecute(Void result) {
|
||||||
|
dialog.dismiss();
|
||||||
|
((MainActivity)ctx).updateGames();
|
||||||
|
|
||||||
|
if(wasError) {
|
||||||
|
new AlertDialog.Builder((Activity)ctx)
|
||||||
|
.setTitle("Error Downloading: "+ gameDownloading.getTitleId())
|
||||||
|
.setMessage(this.errorMsg)
|
||||||
|
.setCancelable(false)
|
||||||
|
.setPositiveButton("OK",null).show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
package com.psmreborn.pkgj;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
|
||||||
|
public class StrUtil {
|
||||||
|
public static void copyTo(InputStream inpStream, OutputStream outStream) throws IOException {
|
||||||
|
byte[] buffer = new byte[8192];
|
||||||
|
int totalRead = 0;
|
||||||
|
|
||||||
|
while(true){
|
||||||
|
totalRead = inpStream.read(buffer, 0, buffer.length);
|
||||||
|
if(totalRead == -1)
|
||||||
|
break;
|
||||||
|
outStream.write(buffer, 0, totalRead);
|
||||||
|
}
|
||||||
|
|
||||||
|
outStream.flush();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -1,105 +0,0 @@
|
||||||
package pink.yuv.android_id;
|
|
||||||
|
|
||||||
import android.app.Activity;
|
|
||||||
import android.content.Context;
|
|
||||||
import android.content.pm.ApplicationInfo;
|
|
||||||
import android.content.pm.PackageManager;
|
|
||||||
import android.os.Build;
|
|
||||||
import android.os.Bundle;
|
|
||||||
import android.provider.Settings.Secure;
|
|
||||||
import android.telephony.TelephonyManager;
|
|
||||||
import android.widget.TextView;
|
|
||||||
|
|
||||||
|
|
||||||
public class MainActivity extends Activity {
|
|
||||||
@Override
|
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
|
||||||
super.onCreate(savedInstanceState);
|
|
||||||
setContentView(R.layout.activity_main);
|
|
||||||
|
|
||||||
TextView androidIdTextView = (TextView)findViewById(R.id.androidId);
|
|
||||||
String android_id = Secure.getString(getContentResolver(), Secure.ANDROID_ID);
|
|
||||||
System.out.println("android_id: "+android_id);
|
|
||||||
androidIdTextView.setText("android_id: "+android_id);
|
|
||||||
|
|
||||||
String psmAppId = "app not installed";
|
|
||||||
|
|
||||||
try{
|
|
||||||
ApplicationInfo psmAppInfo = this.getApplicationContext().getPackageManager().getApplicationInfo("com.playstation.psstore", 0);
|
|
||||||
if(psmAppInfo != null)
|
|
||||||
psmAppId = String.valueOf(psmAppInfo.uid);
|
|
||||||
}
|
|
||||||
catch (PackageManager.NameNotFoundException e) { };
|
|
||||||
|
|
||||||
TextView psmAppIdTextView = (TextView)findViewById(R.id.psmAppId);
|
|
||||||
System.out.println("psstore_uid: "+psmAppId);
|
|
||||||
psmAppIdTextView.setText("psstore_uid: "+psmAppId);
|
|
||||||
|
|
||||||
Context appCtx = getApplicationContext();
|
|
||||||
TelephonyManager tm = ((TelephonyManager) appCtx.getSystemService( Context.TELEPHONY_SERVICE));
|
|
||||||
String deviceId = tm.getDeviceId();
|
|
||||||
if(deviceId == null)
|
|
||||||
deviceId = "(blank)";
|
|
||||||
|
|
||||||
String serial = Build.SERIAL;
|
|
||||||
if(serial == null)
|
|
||||||
serial = "(blank)";
|
|
||||||
|
|
||||||
String brand = Build.BRAND;
|
|
||||||
if(brand == null)
|
|
||||||
brand = "(blank)";
|
|
||||||
|
|
||||||
String manu = Build.MANUFACTURER;
|
|
||||||
if(manu == null)
|
|
||||||
manu = "(blank)";
|
|
||||||
|
|
||||||
String model = Build.MODEL;
|
|
||||||
if(model == null)
|
|
||||||
model = "(blank)";
|
|
||||||
|
|
||||||
String product = Build.PRODUCT;
|
|
||||||
if(product == null)
|
|
||||||
product = "(blank)";
|
|
||||||
|
|
||||||
String device = Build.DEVICE;
|
|
||||||
if(device == null)
|
|
||||||
device = "(blank)";
|
|
||||||
|
|
||||||
String type = Build.TYPE;
|
|
||||||
if(type == null)
|
|
||||||
type = "(blank)";
|
|
||||||
|
|
||||||
|
|
||||||
TextView devPhoneIdTextview = (TextView)findViewById(R.id.devPhoneId);
|
|
||||||
System.out.println("getDeviceId(): " + deviceId);
|
|
||||||
devPhoneIdTextview.setText("getDeviceId(): "+deviceId);
|
|
||||||
|
|
||||||
TextView devSerialTextview = (TextView)findViewById(R.id.devSerial);
|
|
||||||
System.out.println("SERIAL: " + serial);
|
|
||||||
devSerialTextview.setText("SERIAL: "+serial);
|
|
||||||
|
|
||||||
TextView devBrandTextview = (TextView)findViewById(R.id.devBrand);
|
|
||||||
System.out.println("BRAND: " + brand);
|
|
||||||
devBrandTextview.setText("BRAND: "+brand);
|
|
||||||
|
|
||||||
TextView devManuTextview = (TextView)findViewById(R.id.devManu);
|
|
||||||
System.out.println("MANUFACTURER: " + manu);
|
|
||||||
devManuTextview.setText("MANUFACTURER: "+manu);
|
|
||||||
|
|
||||||
TextView devModelTextview = (TextView)findViewById(R.id.devModel);
|
|
||||||
System.out.println("MODEL: " + model);
|
|
||||||
devModelTextview.setText("MODEL: "+model);
|
|
||||||
|
|
||||||
TextView devProductTextview = (TextView)findViewById(R.id.devProduct);
|
|
||||||
System.out.println("PRODUCT: " + product);
|
|
||||||
devProductTextview.setText("PRODUCT: "+product);
|
|
||||||
|
|
||||||
TextView devDeviceTextview = (TextView)findViewById(R.id.devDevice);
|
|
||||||
System.out.println("DEVICE: " + device);
|
|
||||||
devDeviceTextview.setText("DEVICE: "+device);
|
|
||||||
|
|
||||||
TextView devTyoeTextview = (TextView)findViewById(R.id.devType);
|
|
||||||
System.out.println("TYPE: " + type);
|
|
||||||
devTyoeTextview.setText("TYPE: "+type);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -4,111 +4,15 @@
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:paddingTop="8dp"
|
android:paddingTop="8dp"
|
||||||
android:paddingBottom="8dp"
|
android:paddingBottom="8dp"
|
||||||
android:orientation="vertical">
|
android:orientation="horizontal"
|
||||||
<TextView
|
android:keepScreenOn="true"
|
||||||
android:id="@+id/accCache"
|
android:noHistory="true"
|
||||||
|
android:screenOrientation="landscape">
|
||||||
|
|
||||||
|
<ListView
|
||||||
|
android:id="@+id/gameList"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="match_parent"
|
||||||
android:textColor="@color/white"
|
android:textColor="@color/white" />
|
||||||
android:textSize="20sp"
|
|
||||||
android:text="-- account cache related: "/>
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/androidId"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_below="@+id/accCache"
|
|
||||||
android:textColor="@color/white"
|
|
||||||
android:textSize="20sp"
|
|
||||||
android:text="android_id: "/>
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/psmAppId"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_below="@+id/androidId"
|
|
||||||
android:textColor="@color/white"
|
|
||||||
android:textSize="20sp"
|
|
||||||
android:text="psstore_uid: "/>
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/psmDrm"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_below="@+id/psmAppId"
|
|
||||||
android:textColor="@color/white"
|
|
||||||
android:textSize="20sp"
|
|
||||||
android:text="-- psmdrm related: "/>
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/devPhoneId"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_below="@+id/psmDrm"
|
|
||||||
android:textColor="@color/white"
|
|
||||||
android:textSize="20sp"
|
|
||||||
android:text="getDeviceId(): "/>
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/devSerial"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_below="@+id/devPhoneId"
|
|
||||||
android:textColor="@color/white"
|
|
||||||
android:textSize="20sp"
|
|
||||||
android:text="Build.SERIAL: "/>
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/devBrand"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_below="@+id/devSerial"
|
|
||||||
android:textColor="@color/white"
|
|
||||||
android:textSize="20sp"
|
|
||||||
android:text="Build.BRAND: "/>
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/devManu"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_below="@+id/devBrand"
|
|
||||||
android:textColor="@color/white"
|
|
||||||
android:textSize="20sp"
|
|
||||||
android:text="Build.MANUFACTURER: "/>
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/devModel"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_below="@+id/devManu"
|
|
||||||
android:textColor="@color/white"
|
|
||||||
android:textSize="20sp"
|
|
||||||
android:text="Build.MODEL: "/>
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/devProduct"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_below="@+id/devModel"
|
|
||||||
android:textColor="@color/white"
|
|
||||||
android:textSize="20sp"
|
|
||||||
android:text="Build.PRODUCT: "/>
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/devDevice"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_below="@+id/devProduct"
|
|
||||||
android:textColor="@color/white"
|
|
||||||
android:textSize="20sp"
|
|
||||||
android:text="Build.DEVICE: "/>
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/devType"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_below="@+id/devDevice"
|
|
||||||
android:textColor="@color/white"
|
|
||||||
android:textSize="20sp"
|
|
||||||
android:text="Build.TYPE: "/>
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
|
@ -0,0 +1,15 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="fill_parent">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/list_content"
|
||||||
|
android:textColor="@color/white"
|
||||||
|
android:layout_margin="4dp"
|
||||||
|
android:textSize="20sp"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="30sp"/>
|
||||||
|
</LinearLayout>
|
|
@ -1,3 +1,3 @@
|
||||||
<resources>
|
<resources>
|
||||||
<string name="app_name">android_id</string>
|
<string name="app_name">PKGJ</string>
|
||||||
</resources>
|
</resources>
|
|
@ -1,5 +1,5 @@
|
||||||
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
||||||
plugins {
|
plugins {
|
||||||
id 'com.android.application' version '8.0.1' apply false
|
id 'com.android.application' version '8.3.2' apply false
|
||||||
id 'com.android.library' version '8.0.1' apply false
|
id 'com.android.library' version '8.3.2' apply false
|
||||||
}
|
}
|
|
@ -1,6 +1,6 @@
|
||||||
#Mon Aug 14 02:01:41 CEST 2023
|
#Mon Aug 14 02:01:41 CEST 2023
|
||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
|
|
|
@ -12,5 +12,5 @@ dependencyResolutionManagement {
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
rootProject.name = "android_id"
|
rootProject.name = "pkgj"
|
||||||
include ':app'
|
include ':app'
|
||||||
|
|
Loading…
Reference in New Issue