Cant scan QR codes with ZXing - android

I'm really new in Android Development and, like many others, I'm trying desperately to integrate ZXing into my project. I have to make a stand-alone QR scanning application for Android. (I'm using the 2.3.3 sdk).
I have to explain that I've already tried to find a solution to my problem by reading all the answers about the topic but I haven't suceed at all.
Here is what I've done:
I downloaded the ZXing 2.0 Release from here
Then, I added the assets, src and res to my project simply by dragging the files into my
project.
I referenced the core.jar archive located in the "core" folder by right-clicking in my
project > Build Path > Configure Build Path. I add ir as an External JAR.
This is a image to ilustrate.
In here, I was getting some errors in the ID's and some other resources. That was
happening because I was referencing to que wrong R.java, so I solved that by changing "import com.google.zxing.client.android.R" to "import com.android.novaqr.R", which is my projects
package.
Then I added:
<uses-permission android:name="android.permission.CAMERA"/>
and
<activity android:name="com.google.zxing.client.android.CaptureActivity"
android:screenOrientation="landscape"
android:configChanges="orientation|keyboardHidden"
android:theme="#android:style/Theme.NoTitleBar.Fullscreen"
android:windowSoftInputMode="stateAlwaysHidden">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
<intent-filter>
<action android:name="com.google.zxing.client.android.SCAN"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
to the AndroidManifest.xml
So now I have no errors in my code and here is where i need help: I need the phone to scan when I push a button. I've tried a lot of solutions that I saw on the other questions about this topic, but I haven't succeed.
I hope I'm clear with my question, if not, let me know and I'll try to be more specific
Any help will be really apreciated.

You are strongly discouraged from completely copying and pasting our app. It sounds like you're not experienced enough in Android to use it this way anyway.
Instead, you can use the app's scanning service by Intent, which is far easier and supported: http://code.google.com/p/zxing/wiki/ScanningViaIntent

Related

Can't find starting point of android application

So, I'm practicing some reverse engineering and now I chose an Android Trojan in order to inspect (Marcher overlay Android trojan from Contagio Mobile malware samples). I've decompiled it using the Apktool and It generated the smali files and everything. The problem is I can't locate the starting point of the application. In the manifest it says:
...
<activity android:label="#string/app_name" android:name="com.paranbijuv.aijuy.bkqbjl.huitou" android:noHistory="true" android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
... <!-- no other main/launcher in the xml, only these -->
But there is no "com.paranbijuv.aijuy.bkqbjl.huitou" inside the decompiled sources. Actually there is no "paranbijuv" package at all. To make sure Apktool didn't generate wrong sources I've run a strings command directly into the classes.dex file and also no reference to these classes. My question is how can I reach to the starting point of the app in this case?
Edit: Or, if it is the case of some obfuscation, then the app would have to have a entry point anyway... what sort of obfuscation could cause the entrypoint class to be missing from the classes.dex, if possible?
Search that name in public.xml file and then find it's id and search that in the project.

Made one apk, installed two apps

I made an android app with External library. But I don't know why, when I install my apk(only one), installed two apps. One is mine and the other one is an example project of the external library. I think when I started my app, I had to understand how the library works, so I put that example project in my project.
But I can't find the example library's activity or layout somethings, and I don't know where to delete the settings of install example library. It seems like ghost...
you should check AndroidManifest.xml in your 3rd library and remove
<intent-filter>
<action android:name = "android.intent.action.MAIN" />
<category android:name = "android.intent.category.LAUNCHER" />
</intent-filter>

Android Studio expands Activity name in AndroidManifest.xml

I upgraded my project from Eclipse to Android Studio.
Everything is working, including different flavors (in Eclipse I had an ANT script that auto-generated the sourcecode for the different flavors).
I can also generate the different signed APK's. And these all work on the device.
Also uploading these APK's to GooglePlay is no problem.
User also get these updates, but after the update they need to re-create the shortcut to the app on the home screen. The old shortcut is removed.
I believe this is due to the fact that "Android Studio" modifies stuff in the AndroidManifest.xml when generating the APK.
In Eclipse source, in Android studio source and when I inspect the Eclipse generated APK I have the following (with the name being .StartUpActivity) :
<activity android:name=".StartUpActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
However, when I look into the generated apk from Android Studio this is modified to :
<activity android:name="be.abc.android.StartUpActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
So the name has been changed from .StartUpActivity to be.abc.android.StartUpActivity.
In the end, this is the same path but I believe the shortcut just looks at the name .StartUpActivity, and decides it is no longer available and removes the shortcut....
Can I fix this in someway that the shortcuts don't get deleted. Or that Android Studio doesn't mess with the shortened package names in the AndroidManifest.xml ?
Indeed, as soon as you modify the launcher manifest entry, the shortcut has to be recreated. To avoid such issue, you can make use of activity-alias. A step-by-step guide can be found here.

"Default Activity Not Found" on Android Studio upgrade

I upgraded IntelliJ IDEA from 12.0.4 to 12.10.
Now all the modules in my Android project give the error:
Error: Default Activity Not Found
I reverted back to 12.0.4 and it everything works again.
Any ideas? I think it might be an issue with a missing plugin. Since the plugin is not installed, it is not able to find the default activity. Another thing could have been a local configuration, but I doubt it. I deleted the configuration folder to verify and that didn't change anything.
If you see that error occur after upgrading versions of IntelliJ IDEA or Android Studio, or after generating a new APK file, you may need to refresh the IDE's cache.
Menu File → Invalidate Caches and restart...
I can't comment on why the upgrade of IntelliJ IDEA might cause this problem because I don't use it.
However, that error: "Default Activity Not Found" seems to be telling you that you don't have an activity declared in file AndroidManifest.xml that is marked as the main activity, to be launched when the application starts.
You should have at least one activity that looks something like this:
<activity
android:name="com.your.package.name.YourActivity"
android:label="#string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
If you don't have at least one activity with an intent filter like that, you would most likely see the error message you have included here.
You should add that intent filter to the Activity that you wish to open when you start the application, and that should fix your problem.
Additional details
(Android Studio 4.1.2) if the project is created as EmptyApplication then the developer must manually create below three files to avoid the Default Activity Not Found error:
File AndroidManifest.xml
File MainActivity.java
File activity_main.xml
If your app has a launch activity default, possibly this could be your mistake:
Step 1: Select Edit Configurations
Step 2: watch this warning: Default Activity not found
Step 3: select a default activity
Step 3: Save your changes and finish
Good Luck
If you are working on a widget app, this solution should work for you:
Go to Edit Configuration
Set Launch Option to Nothing
The correct way to do this is to add the following to the Manifest file:
<activity
android:name="FULL_NAME_OF_YOUR_ACTIVITY"
android:label="#string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
This should be inserted between:
<application> </application>
No need in invalidating caches.
Try to right click on the project and choose Open Module Settings. Then go to the Sources tab in your module, find the src folder, right click on it and mark it as Sources (blue color).
There is no sources tab in later versions of Android Studio, but you can edit the build.gradle file instead: How to add a linked source folder in Android Studio?
In Android Studio 4.0, please change Launch to Nothing:
Run/Debug Configuration → Android App → app → General → Launch Options → set Launch to Nothing.
In Android Studio under Run/Debug Configuration -> Android Application -> General -> Activity -> select the option "Do not launch Activity".
Nothing in the previous answers helped me. After some time I found that IntelliJ IDEA changed action names to uppercase. Like:
<intent-filter>
<action android:name="ANDROID.INTENT.ACTION.MAIN"/>
<category android:name="ANDROID.INTENT.CATEGORY.LAUNCHER"/>
</intent-filter>
After reverting to normal, IDEA recognizes the default activity:
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
Firstly make sure that you have the included default activity in manifest.
Example:
<activity android:name=".DefaultActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
If you have tried everything and nothing seems to works then
Delete the cache from your %Home%\.gradle\caches and sync project again.
Or check this answer:
Android Studio shows wrong file contents
This solution is 100% working
You must be seeing this:
First, open your manifest and check if this is present,
<activity
android:name="com.your.package.name.YourActivity"
android:label="#string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
If not present, add it
If the above is present, but still you see default activity not found, follow these steps:
Click edit configuration
On clicking edit configuration you'll see that the launch option is set on DEFAULT ACTIVITY
Change it to nothing.
Problem solved!
Note
Please make on the root of the manifest file you should have the package name
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.package.name">
In my case menu File → Invalidate Caches / Restart... didn't help.
Everything was OK with my project and of course I had the following intent filter for my activity:
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
What really helped me was deleting the Android/Gradle cache folders (they can grow up to 10-30 GB).
Go to C:\Users\YOUR_USER_WINDOWS_NAME and delete the following folders
.android
.AndroidStudio3.2
.gradle
(You may save some Android configurations from .AndroidStudio3.2 before deleting it if you want it.)
This method works for me. Click on the app icon and then choose edit configurations.
In the edit-configuration, choose the specified activity instead of the default activity.
Then give the path of the activity below.
In the end, synchronise with the Gradle files.
Exit Android Studio.
Go to path C:\Users\YOUR_WINDOW_USER_NAME.AndroidStudio3.3\system
Remove the /caches folder and the /tmp folder.
As this question is a "landing page" for plethora of issues with manifests, resulting in no Default Activity found, here is another thing to check if you are having this problem.
Open your manifest and switch to Merged Manifest tab.
Sometimes the issue is related to merging all the manifests in the project to one, which can result to error and therefore "Default Activity not found". The problem is this error is not shown anywhere except this Merged Manifest tab as far as I know.
For example: in a project minSdkVersion 10, downgrade the version of implementation in build.gradle file: from 25.4.0 to 25.3.1 solve this problem.
dependencies {
implementation 'com.android.support:appcompat-v7:25.3.1'
implementation 'com.android.support:design:25.3.1'
implementation 'com.android.support:mediarouter-v7:25.3.1'
I changed my Intent-filter to
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
Just add the DEFAULT option as well. I was using the Process Phoenix library and it prompted me to define a default intent. This addition solved my problem.
This occurred to me after my PC restarted unexpectedly. Strangely, I had made no changes and still got this error.
None of the above helped me. What solved my problem, was this.
Step 1:
Step 2:
Step 3:
If this doesn't solve the problem give other tries.
Try 1:
Menu File → Invalidate Caches / Restart...
Try 2:
Check whether the following two lines,
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
are in your launcher activity declaration in file manifest.xml.
<activity
android:name="com.your.package.name.YourActivity"
android:label="#string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Try 3:
Click as shown:
Run / Debug Configurations opens.
If this doesn't help either:
Try 4:
Menu File → Export to ZIP.
and
Import it as a new project.
I got this error.
And found that in the manifest file in the launcher activity I did not put action and
category in the intent filter.
The wrong one:
<activity
android:name=".VideoAdStarter"
android:label="#string/app_name">
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</activity>
The right one:
<activity
android:name=".VideoAdStarter"
android:label="#string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
TouchBoarder almost had it. Although selecting "Do not launch Activity" results in nothing launching.
In Android Studio under Run/Debug Configuration → Android Application → General → Activity → select the option "Launch:"
Choose your Activity. This doesn't exactly fix the intended behaviour, but rather overrides it correctly.
All previous answers didn't help me.
Try to remove
<?xml version="1.0" encoding="utf-8"?>
in your AndroidManifest.
Then menu File → Sync Project with Gradle Files.
In case your application doesn't have an Activity (only a service for example), change the run/debug configuration 'Launch' option to Nothing.
I found this in my code:
<context android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</context>
If you look very carefully, it should be <activity android:name=".MainActivity"> instead.
Apparently, I refactored an "activity" somewhere, and it changed names in the AndroidManifest as well.
In my case I refactored a member variable that was named "activity". I renamed it to "context"...
I found out that the refactor was made to the activity tags in the manifest, and I found them to be context tags instead... this is really stupid from Android Studio side!
Menu Build → Rebuild Project
Menu File → Invalidate Caches... → Invalidate and restart
It works for me.
Rebuild the project to make sure that there aren't any errors in the project. Then we can invalidate the cache.
I have the same problem in Android Studio 3.3 Canary 3.
The project from the Android Studio 3.0 stable version works firstly correctly, but then after some cleans/rebuilds, it starts showing the No Default Activity error.
I tried to reinstall this alpha version of Android Studio: error again. But then I started it in the old stabile Android, and using APK install, and this APK file works correctly.
Moreover, my project was created with Instant App (base, feature, instant, and app subdirectories). I think this Android Studio has some problems with Manifest.xml files separated into this multiple directories.
So I have changed it in settings to this:
Sync Project With Gradle Files works sometimes.
To fix this overall issue you should:
Exit Android Studio
Go to folder USER → AndroidStudio → system → caches
Delete that folder
Start Android Studio.
It will re-index your files and that should work.
Thanks to kirtan403 from a similar question.
Since Android Studio 3.5 or 3.6 I started getting the Default Activity not found and I became tired of Invalidating Caches & Restart, rebuilding project, etc.
It turned out, the way I handle multi-modules and manifests was erroneous. I had the default Activity's Manifest in library module only, but it should've been in both app modules.
Assuming librarymodule appmodule1 appmodule2
Remove HomeActivity from librarymodule Manifest whatsoever.
Add:
class AppModuleActivity1 : HomeActivity() to appmodule1
class AppModuleActivity2 : HomeActivity() to appmodule2
To appmodule1 Manifest inside application tag, I added:
<activity
android:name="com.app.name.AppModuleActivity1">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Same about appmodule2 but change 2 for 1 in naming.
This is still happening with Android Studio 4.0, so I have to delete the following folder to fix this problem:
C:\Users\my_user_name.AndroidStudio4.0\system\caches
In my case, there was a typo in AndroidManifest.xml as shown below. Removing the "o" letter above the application tag solved it.
Apparently, Android Studio doesn't detect type errors in AndroidMainfest.xml
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
o
<application android:name=".AppName"
android:allowBackup="false"
android:icon="#drawable/ic_launcher"
android:label="#string/app_name"
android:theme="#android:style/Theme.Light.NoTitleBar">
Error: Default Activity Not Found
I solved it this way:
Run → Edit Configuration → Android Application → *enter the path of your default activity class in the "Launch" Edit Box.

Android - Is it possible to get two different apk just by cleaning the project?

I use the same source to make apk files.
But I found that I get the different apk files just because of cleaning the project.
Why I think I got two different apk files, I try to change locale, one apk got the language changed, and one is not.
I think there might be something wrong in my "AndroidManifest.xml" file.
Could this kind of thing happen?
i think you got two app launcher ... pls check your manifest file for this..
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
And this should be declared only once in manifest.. check any duplicate is there?

Categories

Resources