In my application descriptor file there is this line:
<!--Removing the permission android.permission.INTERNET will have the side effect
of preventing you from debugging your application on your device-->
<uses-permission android:name="android.permission.INTERNET"/>
Does this mean I won't be able to debug my application with Flash Builder or does it mean that if my app crashes as a user is running it I won't get error reports in Google App developer center?
Nope and No! This is just a permission it wouldn't affect any of the above. It just allows your application to connect to Internet.
But maybe your application needs Internet just to work properly.
ANR and Crash reporting is integrated into OS, and handled via Play Store services. It has nothing to do with your App's permissions.
Related
Sorry, that questions sound stupid but drives me crazy.
I'm about implementing an app very similar to the Bluetooth App described in Developer Android.
I don't get required permissions, though.
Yes, I ask for permission twice
a) in my manifest
b) and I check before using BT with
ActivityCompat.requestPermissions(..)
In logcat, see belove, I learn that my app doesn't get Bluetooth permission.
It isn't the first time I write a BT app. LAst time it was fine. But was a while ago.
My mobile (Nexus 5) told me something about Development Mode Active and apps would be routed to Developer Manager to be started as instant app.
I also learned that Bluetooth access is not granted to instant apps at all.
(I understand that.).
Could that be the problem? Does Android Studio produce different apps now. Does it interact in a different manager with the test hardware?
If so, how do I pursuade Android Studio to not produce an instant app?
Thank you so much in advance.
my manifest code
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
Log output:
android.permission.BLUETOOTH: denied
and some lines earlier
I/ActivityManager: START u0 {act=android.content.pm.action.REQUEST_PERMISSIONS pkg=com.android.packageinstaller cmp=com.google.android.instantapps.supervisor/.permissions.GrantPermissionsTrampoline (has extras)} from uid 10029 on display 0
W/Isotope: UID: [10029] PID: [14812] GrantPermissionsTrampoline : Permission not allowed: android.permission.BLUETOOTH
Sorry for bothering you... It was so easy. I have just deactivated that instant apps dev manager on my Android phone.
Voila, my app is an app again and no instant app. It gets all
permissions it need. Anything is fine.
I'm sorry again.
The error message is:
Network error. Please try again later.
Any idea why it's possibly not loading on my phone. Everything seems to be updated and good.
Assuming your device has a network connection, I would assume it's because you don't have the android.permission.INTERNET permission declared in your manifest.
I'm a newbie with android development. So far I have developed an application which uses SMSManager.
I'm testing my application on an active device when it reaches smsManager.sendTextMessage it throws exception of android.premission.SEND_SMS.
I know that I have to get device permission.
My Question is:
Can I send SMS while uploading application right from IDE, or have to install .apk manually?
You must add the following permissions in your Manifest file:
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
If you install the application via debugging/IDE/ADB it will automatically get the permissions you require in your manifest.
So: Yes! When run on the device through the debugger, the application will be able to send test messages.
Bonus information: If you do "stuff" that the application doesn't have the proper permissions for, the debugger will give you exceptions and hints to what is wrong.
I have seen some Android apps on my phone require this android.permission.READ_PHONE_STATE permission. I don't know if I could trust them. I know this permission will give the app access to many information. I'm particularly interested in what functionality in an Android app normally require the information like DeviceId , SimSerialNumber, SubscriberId?
Phone state provides access to a lot of information about the phone. Usual usages will be for reading the IMEI of your phone and your phone number. This can be useful to identify you in their systems.
It can also be needed if the application is made compatible for Android 1.5 or lower, because this permission didn't exist back then and is added automatically by the play store to those apps
See also: https://android.stackexchange.com/questions/605/why-do-so-many-applications-require-permission-to-read-the-phone-state-and-ident
Another possible reason is so they can mute audio events if you're in the middle of a call. This is why apps like Pandora, Spotify, etc need the permission - so they can mute themselves when you get a call.
Not long ago I discovered that for some devices you should add android.permission.READ_PHONE_STATE if your application sends SMS. Probably in some cases SmsManager tries to retrieve some information about phone state before sending sms.
For example getting exception for HUAWEI GRA-L09:
java.lang.SecurityException: Requires READ_PHONE_STATE: Neither user 10174 nor current process has android.permission.READ_PHONE_STATE.
at android.os.Parcel.readException(Parcel.java:1543)
at android.os.Parcel.readException(Parcel.java:1496)
at com.android.internal.telephony.ISms$Stub$Proxy.s! endMultipartTextForSubscriber(ISms.java:1224)
at android.telephony.SmsManager.sendMultipartTextMessage(SmsManager.java:404)
For allowing or preventing manually installation of apk file from sdcard we ticks/unticks the checkbox which says "Allow installation of app from unknown source".
Can we do this Programmatically by avoiding any User Interface?
Thanks,
Nirav
No, not unless you're a carrier, or not unless you're on an enterprise phone that your company has admin access over.
This is part of the security model of Android, so that a user can not lose the control of his phone to a malicious application.
Here are the actual permissions you would need to do something like that:
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
You can try using those permissions, but by design they won't work unless you have root access to the device.
Within the device settings, users are able to view permissions for
applications they have previously installed. Users can also turn off
some functionality globally when they choose, such as disabling GPS,
radio, or wi-fi.
In the event that an application attempts to use a protected feature
which has not been declared in the application's manifest, the
permission failure will typically result in a security exception being
thrown back to the application. Protected API permission checks are
enforced at the lowest possible level to prevent circumvention.