{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
So I came across this thread a week or more back and implemented it in my ICS rom, but I wasn't happy with it(various reasons but mostly because it is gesture based). So I abandoned it. Fast forward a couple days, jumping from project to project, idea to idea and I somehow ended up porting the latest ICS version of ShenduOS. Then boom, the settings app was *almost* exactly what I wanted. It featured a more natural swiping from tab to tab, similar to most launchers.
So I stripped the code for the tabs from the shendu settings app, stripped that code of any Shendu specific code and re-coded portions of the smali code so I could add it to the settings app of the ICS rom I use as my daily driver. What I ended up with is what seems to be something thats pretty generic and not rom specific.
So now I share with you what *should* work with any ICS+ rom. This guide will be very similar to the one I linked to above.
THIS SHOULD ALSO WORK ON OTHER DEVICES BUT I CANNOT TEST TO BE SURE
Prerequisites:
-experience decompiling/recompiling apk's with APKTool
-experience signing apks
-experience editing/theming apks
I will not go into any of the above any more then just saying when to preform certain actions......
GUIDE:
1. First you will need to decompile the Settings.apk from your ROM with apktool
2. Download the Settings.zip I attached to this post
3. Unzip the Settings.zip and copy the 'res' and 'smali' folders to your decompiled Settings.apk folder(merge with existing folders of the same names)
4. Open 'res/values/strings.xml' from the decompiled settings apk in your favorite text editor and add the following to the end of the list of strings...
Code:
<string name="personalized_setting">Personal</string>
<string name="device_setting">System</string>
<string name="app_setting">Applications</string>
5. Open 'res/values/ids.xml' from the decompiled settings apk in your favorite text editor and add the following to the end of the list of ID's
Code:
<item type="id" name="linearLayout1">false</item>
<item type="id" name="personalized_tab">false</item>
<item type="id" name="device_tab">false</item>
<item type="id" name="app_tab">false</item>
<item type="id" name="cursor">false</item>
<item type="id" name="vPager">false</item>
6.Now you must recompile the settings.apk. This is because APKtool will give resource ID's to certain resources we added during this process, we need these generated ID's in the following steps because the code access's some resources directly by the ID's.
7. Decompile the Newly recompiled APK again, from here on out I will assume your editing this newly recompiled/decompiled version.
8. With this step it is very easy to make a typo, so please make sure you are paying Extra attention to details during this step.
-Open up 'res/values/public.xml' and you will find lines similar to the following.
Code:
<public type="id" name="[COLOR="Red"]vPager[/COLOR]" id="[U]0x7f08022a[/U]" />
-Below I will give you a list of .smali file names, each file is located in the 'smali/com/android/settings/' folder of your decompiled settings.apk
- Each file name will be followed by a line similar to above, you need to search the smali files for the ID(underlined in the example above)
- Then search the public.xml I told you to open above for the name for each line(red in example above)
- Replace the ID in the smali file with the one you located in the public.xml
Code:
!--MainSettings.smali--!
<public type="id" name="vPager" id="0x7f08022a" />
<public type="id" name="cursor" id="0x7f080229" />
<public type="id" name="app_tab" id="0x7f080168" />
<public type="id" name="device_tab" id="0x7f080228" />
<public type="id" name="personalized_tab" id="0x7f080227" />
<public type="layout" name="mainsetting" id="0x7f040090" />
!--DeviceSettings.smali--!
<public type="xml" name="device_settings_headers" id="0x7f050051" />
!--AppSettings.smali--!
<public type="xml" name="app_settings_headers" id="0x7f050052" />
!--PersonalSettings.smali--!
<public type="xml" name="personal_settings_headers" id="0x7f050053" />
9. Now open up the 'AndroidManifest.xml' of your decompiled settings.apk in a text editor.
-Find a section similar to the below....
Code:
<activity android:label="@string/settings_label_launcher" android:name="Settings" android:taskAffinity="com.android.settings" android:clearTaskOnLaunch="true" android:launchMode="singleTop">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.settings.SETTINGS" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
The important parts you are looking for are 'name="Settings" and the 'android.intent.category.LAUNCHER' lines, there *should* only be a single section with these.
Change this section to the below:
Code:
<activity android:label="@string/settings_label_launcher" android:name="Settings">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
Directly above that section copy/paste the following code:
Code:
<activity android:name="MainSetting" android:theme="@android:style/Theme.NoTitleBar" android:taskAffinity="com.android.settings" android:launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.settings.SETTINGS" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:label="@string/settings_label_launcher" android:name="PersonalSettings" android:taskAffinity="com.android.settings" android:launchMode="singleTask">
<intent-filter>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity android:label="@string/settings_label_launcher" android:name="DeviceSettings" android:taskAffinity="com.android.settings" android:launchMode="singleTask">
<intent-filter>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity android:label="@string/settings_label_launcher" android:name="AppSettings" android:taskAffinity="com.android.settings" android:launchMode="singleTask">
<intent-filter>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
10. You are now done with this round of modifications, its time to recompile the APK. Because this is a system app and we edited AndroidManifest.xml we must sign this recompiled Apk before pushing it to the system. You can try using any of the keys that come with whatever apk signing tool you use, but you will more then likely end up with a Settings.apk that wont show as being installed. To overcome this on ASOP roms I download and sign system apks with the platfrom keys from CyanogenMod's android_build github. If everything goes well and you push the new signed apk to the system, your settings app should now look similar to this when you open it.
11. What you have is 3 tabs with no settings. I left this for you to do, as each rom has its own specific settings options. Most ASOP roms store the main page of settings options in the 'res/xml/settings_headers.xml'. Copy/paste/reorganize each of these options into the 'app_settings_headers.xml', 'device_settings_headers.xml' and 'personal_settings_headers.xml' files which are also located in 'res/xml/'.
12. After all is said and done above, you *may* need to edit/theme the 'res/layout/mainsettings.xml' to suit your roms specific look.
NOTE:
If you are attempting this on a Non-ASOP Rom or are having trouble you may need to follow these additional instructions
And to finally end this, here are some screenshots where I added this feature to the settings.apk of our twistedmodICS rom by pwn.
alternate mirror to files :http://www.mediafire.com/?8vp99zjfkbe42z2
reserved....
Nice to see you finally got it how you wanted it. Thanks for the guide
Sent from my myTouch_4G_Slide using Tapatalk 2
Nice guide. Thank you.
TEAM MiK
MikROMs Since 3/13/11
strapped365 said:
Nice to see you finally got it how you wanted it. Thanks for the guide
Sent from my myTouch_4G_Slide using Tapatalk 2
Click to expand...
Click to collapse
Yessir, I was giddy like a little school girl when I finally got it to function how I wanted
Sent from my HTC Evo Shift using xda app-developers app
Thanks for the work you put into this and the guide
Never mind, I figured it out!
SaintZ93 said:
Never mind, I figured it out!
Click to expand...
Click to collapse
lol.. I re-downloaded to double check, checked it, then quoted your reply only to see that you figured it out already... If you need anything else let me know
Awesome
Shifted from planet Namek
thanks Bro for the guide
but I'm still confuse with this
Quote :
"To overcome this on ASOP roms I
download and sign system apks with the
platfrom keys from CyanogenMod's
android_build github. "
can you guide that too ?
Thanks in advance
hello BigSplit.....after I followed your tutorial. I get this in apktool
C: \ Documents and Settings \ server \ Desktop \ ICS Apktool> apkto
I: Checking Whether sources has changed ...
I: Smaling ...
I: Checking Whether resources has changed ...
I: Building resources ...
AAPT: warning: string 'dsds_dsds_device_status' has no def
\ Documents and Settings \ server \ Desktop \ ICS Apktool \ Settings
AAPT: warning: string 'dsdsdevice_status' has no default t
ents and Settings \ server \ Desktop \ ICS Apktool \ Settings \ res;
I: Building apk file ...
C: \ Documents and Settings \ server \ Desktop \ ICS Apktool> apkto
I: Checking Whether sources has changed ...
I: Checking Whether resources has changed ...
I: Building apk file ...
C: \ Documents and Settings \ server \ Desktop \ ICS Apktool>
and I try to push my settings and my settings disappeared after reboot. help me to fix this problem .. thks
did u sign the apk like i mentioned in the op?
Adi_ai****eru said:
thanks Bro for the guide
but I'm still confuse with this
Quote :
"To overcome this on ASOP roms I
download and sign system apks with the
platfrom keys from CyanogenMod's
android_build github. "
can you guide that too ?
Thanks in advance
Click to expand...
Click to collapse
Google for a guide about signing apks. Most tutorials will have you sign apks with test keys, I gave you a link in that sentence you quoted directly to the files I said you should use in signing instead.
BigSplit said:
Google for a guide about signing apks. Most tutorials will have you sign apks with test keys, I gave you a link in that sentence you quoted directly to the files I said you should use in signing instead.
Click to expand...
Click to collapse
Adi_ai****eru said:
thanks Bro for the guide
but I'm still confuse with this
Quote :
"To overcome this on ASOP roms I
download and sign system apks with the
platfrom keys from CyanogenMod's
android_build github. "
can you guide that too ?
Thanks in advance
Click to expand...
Click to collapse
Dont worry, I got you
HOW TO SIGN APKS/ZIPS
Note: Java needs to be installed for this to work
1. Download the signapk.zip file from my mediafire
http://www.mediafire.com/#8gjgusqbct8q2
2. Extract it and read the "usage.txt"
3. Download the .pk8 and .pem files that BigSplit linked to and copy those into the extracted "signapk" directory
4. Open a command prompt window in the "signapk" extracted directory (Shift+RightClick > Open command prompt here)
5. Run the command in the "usage.txt", substituting your downloaded ".pem" file and your downloaded ".pk8" file and the Settings.apk file in the appropriate places
Command should look something like this
Code:
java -jar signapk.jar downloaded-certificate-HERE.pem download-key-HERE.pk8 SettingsAppHere.apk Settings-signed.apk
The "settings-signed.apk" part can be changed to anything, thats just the signed output file
"SettingsAppHere.apk" is the Settings app you are modding
Sent from my PG06100
Time to sticky this one
stare into oblivion
Fall into sleep
turkbot said:
Time to sticky this one
stare into oblivion
Fall into sleep
Click to expand...
Click to collapse
I know right.
Awesome find again, BigSplit, must've taken you a lot of digging in forums and background knowledge but I gotta say, the end product is definitely worth it :good:
Sent from my PG06100
CNexus said:
Dont worry, I got you
HOW TO SIGN APKS/ZIPS
Note: Java needs to be installed for this to work
1. Download the signapk.zip file from my mediafire
http://www.mediafire.com/#8gjgusqbct8q2
2. Extract it and read the "usage.txt"
3. Download the .pk8 and .pem files that BigSplit linked to and copy those into the extracted "signapk" directory
4. Open a command prompt window in the "signapk" extracted directory (Shift+RightClick > Open command prompt here)
5. Run the command in the "usage.txt", substituting your downloaded ".pem" file and your downloaded ".pk8" file and the Settings.apk file in the appropriate places
Command should look something like this
Code:
java -jar signapk.jar downloaded-certificate-HERE.pem download-key-HERE.pk8 SettingsAppHere.apk Settings-signed.apk
The "settings-signed.apk" part can be changed to anything, thats just the signed output file
"SettingsAppHere.apk" is the Settings app you are modding
Sent from my PG06100
Click to expand...
Click to collapse
How about ApkMultitools ?
I ussualy use ApkMultitools to decompile/compile/sign.apk
Sent from my GT-I8150 using xda app-developers app
Adi_ai****eru said:
How about ApkMultitools ?
I ussualy use ApkMultitools to decompile/compile/sign.apk
Sent from my GT-I8150 using xda app-developers app
Click to expand...
Click to collapse
I guess thats fine too. I like doing things manually though when I can
BigSplit said:
did u sign the apk like i mentioned in the op?
Click to expand...
Click to collapse
Sir ... Can you make this for me. I always fail at boot time ... my settings are always lost. probably because I could not find - <public type="layout" name="mainsetting" id="0x7f040090" /> in public.xml,
im st23i 4.0.4. thks sir ..
Nathan Ali Ashari said:
Sir ... Can you make this for me. I always fail at boot time ... my settings are always lost. probably because I could not find - <public type="layout" name="mainsetting" id="0x7f040090" /> in public.xml,
im st23i 4.0.4. thks sir ..
Click to expand...
Click to collapse
So you are on a stock firmware? If so, I would guess that the other packages are not signed with the same keys I linked to since its a stock ROM and not asop. The only thing you can do then is to attempt to re-sign every system apk/jar with a new signature(which I've never been successful at doing).
And the mainsetting will only show up in the public xml AFTER you compile it, then decompile it again. The only reason it wouldnt show up is if you are not placing the files i posted in the correct directories or not recompiling/decompiling when I said to.
I have a sola, running the JB port from munjeni.
I'm devlopping an app and I get
Failure [INSTALL_FAILED_INVALID_APK] when trying to debug on the phone. USB debug activated of course.
I see this message as well DeviceMonitor: Adb rejected connection to client '21134': closed
My Nexus 7 when i did that, aksed me to autorize my PC. It seem the sola just deny acces ?
Is that some problem with the JB port ? Common problem with the sola ?? Invalid apk, not really a usefull message.
I'm using intelliJ, and here is the manifest, just in case :
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.MyLauncher"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="14"/>
<application android:label="@string/app_name" android:icon="@drawable/ic_launcher">
<activity android:name="LauncherScreen" android:theme="@android:style/Theme.Wallpaper.NoTitleBar.Fullscreen">
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.HOME" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
</manifest>
I did some test, put akp on SD, install, start -> all OK.
So apk is valid for sure, and compatible. Had to be some securitty thing bloking it.
EowynCarter said:
I did some test, put akp on SD, install, start -> all OK.
So apk is valid for sure, and compatible. Had to be some securitty thing bloking it.
Click to expand...
Click to collapse
Did you solve?
Yes, got myself a nexus 4
Joke aside, look around in the developer setting, at adb and all.
And the max / min sdk version.
You might also want to try adb install name.akp see what happens.
What phone and rom are you using exactly?
EowynCarter said:
Yes, got myself a nexus 4
Joke aside, look around in the developer setting, at adb and all.
And the max / min sdk version.
You might also want to try adb install name.akp see what happens.
What phone and rom are you using exactly?
Click to expand...
Click to collapse
No way....same extact error with adb install.
My phone is a Zopo zp998 with rom of 28/3/2014
Before the rom update it was working fine!
Hi I created a test android app that does two simple things, open the browswer and open the calculator
My main problem is that once I put a custom permission inside the mainfest, I can no longer open my own application. The app does appear on the launcher screen but when I launch it, it will say "App isn't installed". However using a second app and giving it the proper uses and making sure it's signed by the same signature it opens fine.
Here is the manifest for my main app:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.dms_test_app2"
android:versionCode="2"
android:versionName="1.1" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<permission
android:name="com.example.test"
androidrotectionLevel="signature" android:label="this is my custom permission" />
<uses-permission android:name="com.example.test"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
androidermission="com.example.test"
android:name="com.example.dms_test_app2.MainActivity"
android:label="@string/app_name"
android:launchMode="singleInstance">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
I understand from logcat that the issue is that the LAUNCHER does not have the proper permission:
E/Launcher( 1392): java.lang.SecurityException: Permission Denial: starting Inte
nt { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0
x10200000 cmp=com.example.dms_test_app2/.MainActivity } from ProcessRecord{b5430
118 1392:com.android.launcher/u0a10002} (pid=1392, uid=10002) requires com.examp
le.test
However if you check my manifest, I clearly declared the <uses-permission> tag.
How can I fix this?
Thanks for reading.
BR,
Ken
Doing this i think u should push it uisng adb or root explorer
I should root to
System apps cant install in package installer
It can only in adb or root explorer
Sent from my GT-S5300 using xda app-developers app
i can install fine through "adb install", my problem is executing the main application from the launcher screen
Hello all,
i just registered here to find out if opening a KML file on my SD card with Google maps in offline mode can work.
I am looking for an solution quite a time, but only found this thread on stackover...
To load kml into Google Maps on Android without writing an app, you can create a little html file somewhere with a geo-uri link to the kml file and then click on that link in any Android web browser.
For example: suppose your kml file is located in /sdcard/overlay.kml then you write a geo-uri link like this:
<html>
<head><title>Example KML link page using a geo-uri</title></head>
<body>
overlay.kml
</body>
</html>
Click to expand...
Click to collapse
Clicking on the link will launch Maps and then Maps will attempt to load and your kml.
Be warned however that the Android version of Maps does not appear to handle the same version/range of kml elements as the desktop version (or desktop Google Earth).
Click to expand...
Click to collapse
a other thread is about editing the manifest file to get maps to open local KML files
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="h**p://schemas.android.com/apk/res/android"
package="com.example.lyold"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="15"
android:targetSdkVersion="16" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.CAMERA" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.lyold.LoginActivity"
android:screenOrientation="landscape"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:screenOrientation="landscape"
android:name=".Home" />
<activity android:name="com.google.earth.EarthActivity" android:screenOrientation="landscape"/>
</application>
</manifest>
Click to expand...
Click to collapse
Don't know if this is already outdated solution or not, i just cant get it to work.
Does anybody know a way to open local KML files with google maps in offline mode ?
ThX in advance !
PS: i want to open kml ONLY in google maps, i know there are several apps out there that support kml files....
hello again,
before i start trying to finf out how to edit the manifest file.
I wanted to ask if adding the line
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
Click to expand...
Click to collapse
could help me out here ?
ThX,
SA
Please Help !
Hello world !
Does someone know if editing the manifest file could solve the problem that google maps won't open KML file which are on the phones SD-card.
If not, i can give up to find an option..
ThX,
SA
Hello there!
I have a problem with my app. I am working on a website and it's associated android app.
If the system sends an email with a link within, I want the app to open to this specific content. The app opens but not where it's supposed to be. It stays on the main page of the app.
The links are supposed to auto connect the user, so he can access the app as he wishes automatically, so my links have this form:
https://www.mysite.com/autoconnect/stringHASH/stringKEY
I don't know in advance what will be put in the hash and key parts. So I don't know what to put in the manifest to make this work.
Here is what I currently have in my manifest file:
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https" />
<data android:host="mysite.com" />
<data android:pathPrefix="/autoconnect/" />
</intent-filter>
Did I miss something? I need to add I have generated the well-known file and it is on my server.
Thank you for your help!