[Q] Java Code format question relating to 52XX cm11 project - Galaxy Tab 3 Q&A, Help & Troubleshooting

hi guys,
i'll keep this quick. this is a warning i got for the following, my question is how to correct, it doesn't need to be vital. i would like to know
what's screwy and how to fix it. every bit helps..... (bit....get it ? ) :silly:
Code:
target Dex: Development
/storage/cm11/out/target/common/obj/JAVA_LIBRARIES/android_stubs_current_intermediates/src/java/security/cert/PKIXBuilderParameters.java:5: warning: [unchecked] unchecked conversion
public PKIXBuilderParameters(java.util.Set<java.security.cert.TrustAnchor> trustAnchors, java.security.cert.CertSelector targetConstraints) throws java.security.InvalidAlgorithmParameterException { super((java.util.Set)null); throw new RuntimeException("Stub!"); }
^
required: Set<TrustAnchor>
found: Set
/storage/cm11/out/target/common/obj/JAVA_LIBRARIES/android_stubs_current_intermediates/src/java/util/concurrent/ScheduledThreadPoolExecutor.java:6: warning: [unchecked] unchecked conversion
public ScheduledThreadPoolExecutor(int corePoolSize) { super(0,0,0,(java.util.concurrent.TimeUnit)null,(java.util.concurrent.BlockingQueue)null,(java.util.concurrent.ThreadFactory)null,(java.util.concurrent.RejectedExecutionHandler)null); throw new RuntimeException("Stub!"); }
^
required: BlockingQueue<Runnable>
found: BlockingQueue
/storage/cm11/out/target/common/obj/JAVA_LIBRARIES/android_stubs_current_intermediates/src/java/util/concurrent/ScheduledThreadPoolExecutor.java:7: warning: [unchecked] unchecked conversion
public ScheduledThreadPoolExecutor(int corePoolSize, java.util.concurrent.ThreadFactory threadFactory) { super(0,0,0,(java.util.concurrent.TimeUnit)null,(java.util.concurrent.BlockingQueue)null,(java.util.concurrent.ThreadFactory)null,(java.util.concurrent.RejectedExecutionHandler)null); throw new RuntimeException("Stub!"); }
^
required: BlockingQueue<Runnable>
found: BlockingQueue
/storage/cm11/out/target/common/obj/JAVA_LIBRARIES/android_stubs_current_intermediates/src/java/util/concurrent/ScheduledThreadPoolExecutor.java:8: warning: [unchecked] unchecked conversion
public ScheduledThreadPoolExecutor(int corePoolSize, java.util.concurrent.RejectedExecutionHandler handler) { super(0,0,0,(java.util.concurrent.TimeUnit)null,(java.util.concurrent.BlockingQueue)null,(java.util.concurrent.ThreadFactory)null,(java.util.concurrent.RejectedExecutionHandler)null); throw new RuntimeException("Stub!"); }
^
required: BlockingQueue<Runnable>
found: BlockingQueue
/storage/cm11/out/target/common/obj/JAVA_LIBRARIES/android_stubs_current_intermediates/src/java/util/concurrent/ScheduledThreadPoolExecutor.java:9: warning: [unchecked] unchecked conversion
public ScheduledThreadPoolExecutor(int corePoolSize, java.util.concurrent.ThreadFactory threadFactory, java.util.concurrent.RejectedExecutionHandler handler) { super(0,0,0,(java.util.concurrent.TimeUnit)null,(java.util.concurrent.BlockingQueue)null,(java.util.concurrent.ThreadFactory)null,(java.util.concurrent.RejectedExecutionHandler)null); throw new RuntimeException("Stub!"); }
^
required: BlockingQueue<Runnable>
found: BlockingQueue
/storage/cm11/out/target/common/obj/JAVA_LIBRARIES/android_stubs_current_intermediates/src/org/apache/http/impl/conn/tsccm/BasicPoolEntryRef.java:5: warning: [unchecked] unchecked conversion
public BasicPoolEntryRef(org.apache.http.impl.conn.tsccm.BasicPoolEntry entry, java.lang.ref.ReferenceQueue<java.lang.Object> queue) { super(null,(java.lang.ref.ReferenceQueue)null); throw new RuntimeException("Stub!"); }
^
required: ReferenceQueue<? super BasicPoolEntry>
found: ReferenceQueue
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
6 warnings
m

Related

[Q] How do I build binary compatible system apks for JRO03C?

Please note that this question is purely academic in nature. My phone is not broken, and all the features I need are enabled. I just want to know how to make similar changes myself (see below).
Forgive me if this is in the wrong forum. I was going to post this in the Verizon Samsung Galaxy Nexus Development forum, but the site warned me that asking questions in that forum was against the rules (OK, I won't post my question there)!
I have a "toro" (Samsung Galaxy Nexus for VzW with LTE/CDMA).
Yesterday, I repo synced my AOSP source to bring it up to date. My phone is running an almost stock "maguro" (rooted) JRO03O from https://dl.google.com/dl/android/aosp/mysid-jro03o-factory-f17426e6.tgz .
Then I sourced build/envsetup.sh and selected full_toro-user (yes, "user", not "userdebug" ) with the lunch menu.
I then made what I thought was a clever patch to packages/apps/Settings/src/com/android/settings/TetherSettings.java where I added a few constants and a boolean function called isProvisioningAllowed() that is called by a now modified boolean function isProvisioningNeeded(). Essentially, isProvisioningNeeded() now checks to see if the Android owner allows his carrier to limit tethering to provisioned users (before checking to see if the carrier requires provisioning). As you may have guessed, using my patch, the default setting is now that the carrier is not allowed by the Android owner to require provisioning from the user.
For anyone curious, here is the .diff for my patch for TetherSettings.java (Java is not a programming language that I "know", but I can figure out most of the syntax from the existing code - so I may have crappy code) :
Code:
project packages/apps/Settings/
diff --git a/src/com/android/settings/TetherSettings.java b/src/com/android/settings/TetherSettings.java
index 4a79eca..63f1526 100644
--- a/src/com/android/settings/TetherSettings.java
+++ b/src/com/android/settings/TetherSettings.java
@@ -106,6 +106,11 @@ public class TetherSettings extends SettingsPreferenceFragment
private String[] mProvisionApp;
private static final int PROVISION_REQUEST = 0;
+ /* Is carrier allowed to require provisioning for tethering */
+ private static final int CARRIER_TETHERING_PROVISIONING_ALLOWED = 0;
+ private static final int CARRIER_TETHERING_PROVISIONING_PROHIBITED = -1;
+ private int mCarrierTetheringProvisioning = CARRIER_TETHERING_PROVISIONING_PROHIBITED;
+
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
@@ -424,6 +429,36 @@ public class TetherSettings extends SettingsPreferenceFragment
return false;
}
+ boolean isProvisioningAllowed() {
+ /* returns whether Android owner allows carrier to restrict tethering to provisioned users */
+ if (mCarrierTetheringProvisioning == CARRIER_TETHERING_PROVISIONING_PROHIBITED) {
+ return false;
+ }
+ if (mCarrierTetheringProvisioning == CARRIER_TETHERING_PROVISIONING_ALLOWED) {
+ return true;
+ }
+ /* If neither of the above values match mCarrierTetheringProvisioning then assume it is prohibited by Android owner */
+ return false;
+ }
+
+ boolean isProvisioningNeeded() {
+ /* first check to see if provisioning is allowed before checking to see if it is needed */
+ if (isProvisioningAllowed()) {
+ /* provisioning is allowed, check to see if needed */
+ if (SystemProperties.getBoolean("net.tethering.noprovisioning", false)) {
+ /* provisioning is allowed, but not needed */
+ return false;
+ }
+ /* provisioning is allowed (and needed if mProvisionApp array has two values) */
+ return mProvisionApp.length == 2;
+ } else {
+ /* provisioning is not allowed, therefore it is not needed */
+ return false;
+ }
+
+/* Original (unaltered) isProvisioningNeeded() function
+
boolean isProvisioningNeeded() {
if (SystemProperties.getBoolean("net.tethering.noprovisioning", false)) {
return false;
@@ -431,6 +466,8 @@ public class TetherSettings extends SettingsPreferenceFragment
return mProvisionApp.length == 2;
}
+*/
+
private void startProvisioningIfNecessary(int choice) {
mTetherChoice = choice;
if (isProvisioningNeeded()) {
Then I built the entire tree. Next, I backed up "Settings.apk" and "Settings.odex" from my /system/app directory on my phone. Also, I remounted /system as r/w. I then dropped in the new "Settings.apk" and "Settings.odex" from my custom build, and set the owner.group to root.root (on both) and permissions to 644 (on both). I remounted /system as r/o again.
Even with a cold boot, the "Settings" menu crashes when launched (with my "Settings.apk" and "Settings.odex" in place).
I restored my backups for those two system files, and rebooted again (which fixed my Settings menu/app). I then downloaded somebody else's fixed "framework-res.apk" and deleted "SPG.apk". While this accomplishes one goal (no carrier restrictions on Google Android native tethering), it does not help me learn how to do this myself.
I want to be able to tweak the AOSP source on the fly, and produce binaries that are compatible with my ROM.
So my problem basically breaks down to the following 4 sub-questions:
1) Can anyone tell me why my customized "Settings.apk" and "Settings.odex" crash when "Settings" is launched?
2) Did I make a change that would break binary compatibility (I tried not to)?
3) Or is it because the current version of AOSP builds binaries for 4.1.2 (JZO54K) instead of for 4.1.1 (JRO03O)?
4) How do I build AOSP for an older tag anyway (like 4.1.1_r1)?

[SOLVED][Help] Using the hooked app's resources in beforeHookedmethod

Hello, I am trying to hook a method and use the hooked app's resources in it, but I keep getting an error. Can you please have a look?
Code:
public void handleLoadPackage(LoadPackageParam lpparam) throws Throwable {
if ((Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) && (lpparam.packageName.contains("android.keyguard") || lpparam.packageName.contains("com.android.systemui"))) {
Class<?> KeyguardHostView = XposedHelpers.findClass("com.android.keyguard.KeyguardSecurityContainer",lpparam.classLoader);
findAndHookMethod(KeyguardHostView, "showSecurityScreen", "com.android.keyguard.KeyguardSecurityModel$SecurityMode", new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
Context ctx = ((FrameLayout) param.thisObject).getContext();
mStartTranslation = ctx.getResources().getDimensionPixelOffset(R.dimen.appear_y_translation_start) * translationScaleFactor;
}); }}
The relevant source for the hooked method is here https://github.com/temasek/android_...droid/keyguard/KeyguardSecurityContainer.java
Thank you for your time.
Rijul.A said:
Hello, I am trying to hook a method and use the hooked app's resources in it, but I keep getting an error. Can you please have a look?
Code:
public void handleLoadPackage(LoadPackageParam lpparam) throws Throwable {
if ((Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) && (lpparam.packageName.contains("android.keyguard") || lpparam.packageName.contains("com.android.systemui"))) {
Class<?> KeyguardHostView = XposedHelpers.findClass("com.android.keyguard.KeyguardSecurityContainer",lpparam.classLoader);
findAndHookMethod(KeyguardHostView, "showSecurityScreen", "com.android.keyguard.KeyguardSecurityModel$SecurityMode", new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
Context ctx = ((FrameLayout) param.thisObject).getContext();
mStartTranslation = ctx.getResources().getDimensionPixelOffset(R.dimen.appear_y_translation_start) * translationScaleFactor;
}); }}
The relevant source for the hooked method is here https://github.com/temasek/android_...droid/keyguard/KeyguardSecurityContainer.java
Thank you for your time.
Click to expand...
Click to collapse
Depends on whether R.dimen.appear_y_translation_start is part of your module, or part of hooked package.
If it is part of hooked package resources you need to get it within hooked package context using proper identifier;
you cannot use identifier of resource you put in your module resources because it's completely different resource with different ID.
Example:
Code:
int resId = ctx.getResources().getIdentifier("appear_y_translation_start", "dimen", lpparam.packageName);
mStartTranslation = ctx.getResources().getDimensionPixelOffset(resId) * translationScaleFactor;
If this resource is part of your xposed module package, then you have to create package context using original context so you can get your module resources
which inherit proper display metrics from original package resources.
Code:
Context moduleContext = ctx.createPackageContext(myModulePackageName, Context.CONTEXT_IGNORE_SECURITY);
mStartTranslation = moduleContext.getResources().getDimensionPixelOffset(R.dimen.appear_y_translation_start) * translationScaleFactor;
C3C076 said:
Depends on whether R.dimen.appear_y_translation_start is part of your module, or part of hooked package.
If it is part of hooked package resources you need to get it within hooked package context using proper identifier;
you cannot use identifier of resource you put in your module resources because it's completely different resource with different ID.
Example:
Code:
int resId = ctx.getResources().getIdentifier("appear_y_translation_start", "dimen", lpparam.packageName);
mStartTranslation = ctx.getResources().getDimensionPixelOffset(resId) * translationScaleFactor;
If this resource is part of your xposed module package, then you have to create package context using original context so you can get your module resources
which inherit proper display metrics from original package resources.
Code:
Context moduleContext = ctx.createPackageContext(myModulePackageName, Context.CONTEXT_IGNORE_SECURITY);
mStartTranslation = moduleContext.getResources().getDimensionPixelOffset(R.dimen.appear_y_translation_start) * translationScaleFactor;
Click to expand...
Click to collapse
Thanks, that works very well. Can you please also explain to me how I can retrieve value of attribute resources (I think that's what they are called) from the hooked package resources?
Code:
android:textColor="?android:attr/textColorSecondary"
I want to get this colour (as used in XML) so that I can do it in code
Code:
mEmergencyButton.setTextColor(color)
In case someone is looking for a solution to this
Code:
TypedValue outValue = new TypedValue();
mContext.getTheme().resolveAttribute(android.R.attr.textColorSecondary, outValue, true);
int[] textSizeAttr = new int[] {android.R.attr.textColorSecondary};
TypedArray a = context.obtainStyledAttributes(outValue.data, textSizeAttr);
int textColor = a.getColor(0, -1);
a.recycle();
mEmergencyButton.setTextColor(textColor);
mContext.getTheme().resolveAttribute(android.R.attr.selectableItemBackground, outValue, true);
mEmergencyButton.setBackgroundResource(outValue.resourceId);

[GENERAL KNOWLEDGE]View files/resources a 3rd party app read/writes to

Hello all,
Just curious about some general knowledge (salute; reference: HIMYM) on whether or not it's possible to see what an app is doing (during installation, in the background, app initialization, and foreground usage)
It's not my own app in question so I understand physically seeing the code is out of the question; however I'm more concerned about what the app is doing and the files/directories it accesses, and whether or not there's a way for me to view these activities.
If you must know, the app in question is the Adidas Confirmed app as RootCloak (and various other apps) DO NOT WORK. I'm attempting to isolate the issue, and I'm fairly certain it has to do with an external resource (within the device; i.e. different partition, files, folders, etc.) that permanently marks the device 'rooted' during initial installation. Maybe if I can see exactly what the app reaches out to, I can then come up with a fix action.
Any input would be greatly appreciated.
You could try to decompile this app, but it might not work very well if the app obfuscates the code http://decompileandroid.com/
Rijul.A said:
You could try to decompile this app, but it might not work very well if the app obfuscates the code http://decompileandroid.com/
Click to expand...
Click to collapse
This actually worked PERFECTLY. I was able to go inside the src and see exactly the commands the app calls for to check root.
If anyone is interested...I'm going to try a few things out, play with some variables and see if I can't allow the app access on my rooted device.
Code:
// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/kpdus/jad.html
// Decompiler options: braces fieldsfirst space lnc
package com.gpshopper.adidas.objects;
import android.os.Build;
import java.io.File;
// Referenced classes of package com.gpshopper.adidas.objects:
// ExecShell
public class Root
{
private static String LOG_TAG = com/gpshopper/adidas/objects/Root.getName();
public Root()
{
}
public static boolean checkRootMethod1()
{
String s = Build.TAGS;
return s != null && s.contains("test-keys");
}
public static boolean checkRootMethod2()
{
label0:
{
label1:
{
boolean flag = false;
boolean flag1;
try
{
File file = new File("/system/app/Superuser.apk");
File file1 = new File("/system/app/SuperSU/SuperSU.apk");
if (file.exists())
{
break label1;
}
flag1 = file1.exists();
}
catch (Exception exception)
{
return false;
}
if (!flag1)
{
break label0;
}
}
flag = true;
}
return flag;
}
public static boolean checkRootMethod3()
{
return (new ExecShell()).executeCommand(ExecShell.SHELL_CMD.check_su_binary) != null;
}
public static boolean isDeviceRooted()
{
return checkRootMethod1() || checkRootMethod2() || checkRootMethod3();
}
}
There is a similar file also in the src using a different language I've not yet been able to comprehend. I'm really new at this in case you couldn't already figure lol...is it possible to view my device's database where apps store variables? It may be possible the app is permanently storing the variable even after its removal so best case would be to start from a fresh ROM install. Just a theory.
The other language is generally irrelevant
Delete /data/data/<packagename>/ or clear app data normally, that will work, no need for a fresh install.
If you need help hooking this method, please quote me in a reply.

Xposed access variables in methods

Hello,
Iam working on a XposedModule and I need to get a variable from an other class. I have access to this class and I can access the global variables from this class but I can not access a variable which is only available in a method.
using:
Code:
Class<?> ProfileInfoClass = XposedHelpers.findClass("com.hi",lpparam.classLoader);
XposedBridge.hookAllMethods(ProfileInfoClass,"hie",new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
super.afterHookedMethod(param);
String s = (String)XposedHelpers.getObjectField(param.thisObject,"hello2"); //not found
}
});
with this class:
Code:
public class hi(){
String hello = "hello"; //This variable I can get
public void hie(){
String hello2 = "hi"; //This Variable I can not get using XposedHelpers.getObjectField(param.thisObject,"hello2");
}
}
Is there an other way to access variables inner Mehtods?
Thanks. Jojii
Nope, you can't.

How to implement an interface with a generic type?

What I need to do is create an instance of this interface:
Code:
public interface ResultCallback<T> {
void onFailure(Exception exception);
void onSuccess(T t);
}
In the application I'm trying to hook it's done like this:
Code:
new ResultCallback<Offer>() {
public void onSuccess(Offer offer) {
}
public void onFailure(Exception e) {
}
}
How can I recreate that in Xposed?

Categories

Resources