So I am working on app which need to write in sd card, when I try to write in file, it says: java.lang.NullPointerException
Here's my code:
public void goWrite() {
File sdPath = Environment.getExternalStorageDirectory();
sdPath = new File(sdPath.getAbsolutePath() + "/" + DIR);
sdPath.mkdir();
Toast.makeText(this ,"" + sdPath ,Toast.LENGTH_LONG).show();
File sdFile = new File(sdPath ,filename);
try {
BufferedWriter bw = new BufferedWriter(new FileWriter(sdFile));
bw.write("Correct answers - " + correct + "\nincorrect answers - " + incorrect);
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
here's my manifest
<application
android:allowBackup="true"
android:icon="#mipmap/ic_launcher"
android:label="#string/app_name"
android:theme="#style/AppTheme" >
<activity
android:name=".indentification"
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:name=".trivia"
android:label="#string/title_activity_indentification" >
</activity>
<activity
android:name=".Summary"
android:label="#string/title_activity_summary" >
</activity>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
</application>
What need I do?
Thanks for help :D
Related
I am trying to use FCM to make push notifications but when I use the FCM test notification system, I don't recieve any notification. I don't think I need any code for that purpose except for my registration token which I obtain like this
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
I then store it in a database and copy-paste it so that there is no change. But still I am not recieving any notification. I even added the onMessageRecieved function
public void onMessageReceived(RemoteMessage remoteMessage) {
// ...
if (remoteMessage.getData().size() > 0) {
// Handle message within 10 seconds
handleNow(remoteMessage.getNotification().getBody());
}
if (remoteMessage.getNotification() != null) {
// Log.d(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody());
}
}
public void handleNow(String body) {
Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder builder = new NotificationCompat.Builder(this,"Alerts")
.setSmallIcon(R.drawable.logo)
.setContentTitle("Stice Alerts")
.setContentText(body)
.setPriority(NotificationCompat.PRIORITY_MAX)
.setSound(defaultSoundUri)
.setStyle(new NotificationCompat.BigTextStyle()
.bigText(body));
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);
notificationManager.notify(100,builder.build());
}
Here is my notification channel
private void createNotificationChannel() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
CharSequence name = "Alerts";
String description = "For alerts when someone is going";
int importance = NotificationManager.IMPORTANCE_HIGH;
NotificationChannel channel = new NotificationChannel("Alerts",name,importance);
channel.setDescription(description);
NotificationManager notificationManager = getSystemService(NotificationManager.class);
notificationManager.createNotificationChannel(channel);
}
}
My android manifest file
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.jobifyme">
<application
android:allowBackup="true"
android:icon="#drawable/logo"
android:label="#string/app_name"
android:roundIcon="#mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="#style/AppTheme">
<activity android:name=".DeleteTask"/>
<activity android:name=".OurTeam" />
<activity android:name=".TaskView" />
<activity android:name=".AddAlert" />
<activity android:name=".AddTask" />
<service
android:name=".MyFirebaseInstanceIDService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
<activity android:name=".TaskList"
android:parentActivityName="com.example.jobifyme.FirstScreen" >
<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.jobifyme.FirstScreen" />
</activity>
<activity android:name=".FirstScreen" />
<activity android:name=".StartingPage" />
<meta-data
android:name="com.google.firebase.messaging.default_notification_icon"
android:resource="#drawable/logo" />
<meta-data
android:name="com.google.firebase.messaging.Alerts"
android:value="#string/default_notification_channel_id" />
<meta-data
android:name="firebase_messaging_auto_init_enabled"
android:value="false" />
<meta-data
android:name="firebase_analytics_collection_enabled"
android:value="false" />
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Can anyone tell me what I might be doing wrong?
While sending out your notifications from Firebase Cloud Messaging, make sure the channel set is equal to your channel name Alerts
I am learning to develop apps for Android but I am stuck with this topic:
https://www.tutorialspoint.com/android/android_broadcast_receivers.htm
I have visited numerous sites with examples, downloaded source code and tried in two different computers with Android Studio and tried in a virtual and physical device, but I can't figure out where the problem is.
MANIFEST
<application
android:allowBackup="true"
android:icon="#mipmap/ic_launcher"
android:label="#string/app_name"
android:roundIcon="#mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="#style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name=".MyReceiver" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.AIRPLANE_MODE" />
<action android:name="android.intent.action.TIME_TICK" />
<action android:name="com.example.myapplication.TEST_BROADCAST" />
</intent-filter>
</receiver>
</application>
MyReceiver.java
public class MyReceiver extends BroadcastReceiver{
String logPrefix = "Android : ";
#Override
public void onReceive(Context context, Intent intent) {
Log.d(logPrefix, "Broadcast received");
Toast.makeText(context, "Intent Detected.", Toast.LENGTH_LONG).show();
}
}
MainActivity.java
public class MainActivity extends AppCompatActivity {
String logPrefix = "Android : ";
/** Called when the activity is first created. */
#Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d(logPrefix, "The onCreate() event");
}
public void broadcastIntent(View view){
Log.d(logPrefix, "Sending broadcast...");
Intent intent = new Intent("com.example.myapplication.TEST_BROADCAST");
sendBroadcast(intent);
}
}
I am developing a Web App with android studio.. I need to have the access open the storage in mobile phone how can I do that?
Here's my manifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.blogspot.httpsmekomik.appmatkomik">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<application
android:allowBackup="true"
android:icon="#mipmap/ic_launcher"
android:label="#string/app_name"
android:supportsRtl="true"
android:theme="#style/AppTheme">
<activity
android:name=".MainActivity"
android:screenOrientation="portrait">
</activity>
<activity android:name=".splash">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
MainActivity.java
public class MainActivity extends AppCompatActivity {
private AdView mAdView;
WebView webview;
#Override
public void onBackPressed() {
if (webview.canGoBack()) {
webview.goBack();
} else {
super.onBackPressed();
}
}
#Override
protected void onCreate(#Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
OneSignal.startInit(this)
.inFocusDisplaying(OneSignal.OSInFocusDisplayOption.Notification)
.unsubscribeWhenNotificationsAreDisabled(true)
.init();
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_main);
webview = (WebView) findViewById(R.id.webView);
WebSettings webSettings = webview.getSettings();
webSettings.setJavaScriptEnabled(true);
webview.getSettings().setSupportZoom(true);
webview.setWebViewClient(new WebViewClient());
webview.loadUrl("https://mekomik.blogspot.my");
mAdView = (AdView) findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest);
}
}
If require more information from me, please let me know.
I hope you can help me, thanks.
I followed https://developers.google.com/analytics/devguides/collection/android/v4/ to implement google analytics in my android app. But it is not showing any data.
Can anyone help?
Manifest file:
<application
android:allowBackup="true"
android:icon="#drawable/app_icon"
android:label="#string/app_name"
android:supportsRtl="true"
android:theme="#style/AppTheme"
android:name=".AnalyticsApplication">
<activity android:name="com.xxx.xxxx.SplashScreen"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.xxx.xxxx.LoginScreen"
android:screenOrientation="portrait"/>
<activity android:name="com.xxx.xxxx.ForgotPasswordScreen"
android:screenOrientation="portrait"/>
<activity android:name="com.xx.xxx.SignupScreen"
android:screenOrientation="portrait"/>
<activity android:name="com.xxx.xxx.HomeScreen"
android:screenOrientation="portrait">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.xxx.xxxx.SplashScreen" />
<meta-data
android:name="com.google.android.gms.version"
android:value="#integer/google_play_services_version"/>
<meta-data
android:name="com.google.android.gms.analytics.globalConfigResource"
android:resource="#xml/global_tracker"/>
</activity>
</application>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
AnalyticsApplication
public class AnalyticsApplication extends Application {
private static GoogleAnalytics sAnalytics;
private static Tracker mTracker;
#Override
public void onCreate() {
super.onCreate();
sAnalytics = GoogleAnalytics.getInstance(this);
}
synchronized public Tracker getDefaultTracker() {
// To enable debug logging use: adb shell setprop log.tag.GAv4 DEBUG
if (mTracker == null) {
mTracker = sAnalytics.newTracker(R.xml.global_tracker);
}
return mTracker;
}
}
HomeScreen
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.home_screen);
Helper.printLog(tag, "onCreate");
AnalyticsApplication application = (AnalyticsApplication)
getApplication();
mTracker = application.getDefaultTracker();
mTracker.setScreenName("home screen");
mTracker.send(new HitBuilders.ScreenViewBuilder().build());
}
onclick(){
mTracker.send(new HitBuilders.EventBuilder()
.setCategory("Action account")
.setAction("account clicked")
.build());
changeFragment(new AccountFragment());
}
app-gradle
dependencies{
compile 'com.google.android.gms:play-services-analytics:10.2.4'}
project-gradle
dependencies {
classpath 'com.android.tools.build:gradle:2.3.2'
classpath 'com.google.gms:google-services:3.0.0'
}
Try firebase analytics firebase is a google product to build high quality apps and its uses Google Analytics. Firebase and google analytics are same
Visit - https://firebase.google.com/docs/analytics/
Hope this help
I am a newbie in Android Studio and I copied an Android Studio project from a pen drive in my Laptop and tried to run it on my laptop and I am getting this error in Android Studio. Given below is my build.gradle file:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
apply plugin: 'com.android.application'
buildscript {
repositories {
jcenter()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.2'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
mavenCentral()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
dependencies {
// https://mvnrepository.com/artifact/com.android.tools/sdklib
compile group: 'com.android.tools', name: 'sdklib', version: '25.1.2'
compile 'com.android.support:support-annotations:23.1.1'
compile 'com.android.support:support-v4:23.1.1'
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:support-v13:23.1.1'
compile 'com.android.support:cardview-v7:23.1.1'
compile project(':app')
compile 'com.android.support:design:23.1.1'
compile 'com.android.support:gridlayout-v7:23.1.1'
}
android {
compileSdkVersion 23
buildToolsVersion '23.0.1'
sourceSets {
main {
manifest.srcFile 'Calci-app/src/main/AndroidManifest.xml'
}
}
dexOptions {
incremental true
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_6
targetCompatibility JavaVersion.VERSION_1_6
}
}
repositories {
maven { url 'android.support.design.widget.AppBarLayout' }
}
I don't know how to fix this error. Please help me..
here is my androidManifest file:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.facilitydoor.app.facilitydoor">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application
android:name=".ApplicationWrapper"
android:allowBackup="true"
android:icon="#mipmap/ic_launcher"
android:label="#string/app_name"
android:supportsRtl="true"
android:theme="#style/AppTheme">
<activity
android:name=".MainActivity"
android:label="#string/app_name"
android:theme="#style/Theme.AppCompat.Light.NoActionBar">
</activity>
<activity
android:name=".LoginActivity"
android:label="#string/app_name"
android:theme="#style/Theme.AppCompat.Light.NoActionBar" />
<activity
android:name=".Door_Wallet"
android:label="#string/app_name"
android:theme="#style/Theme.AppCompat.Light.NoActionBar" />
<activity
android:name=".SubSubCategory"
android:label="#string/app_name"
android:theme="#style/Theme.AppCompat.Light.NoActionBar" />
<activity
android:name=".PaymentGateway"
android:label="#string/app_name"
android:theme="#style/Theme.AppCompat.Light.NoActionBar" />
<activity
android:name=".TermsOfUse"
android:label="#string/app_name"
android:theme="#style/Theme.AppCompat.Light.NoActionBar" />
<activity
android:name=".PrivacyPolicy"
android:label="#string/app_name"
android:theme="#style/Theme.AppCompat.Light.NoActionBar" />
<activity
android:name=".AboutUs"
android:label="#string/app_name"
android:theme="#style/Theme.AppCompat.Light.NoActionBar" />
<activity
android:name=".ContactUs"
android:label="#string/app_name"
android:theme="#style/Theme.AppCompat.Light.NoActionBar" />
<activity
android:name=".RegistrationActivity"
android:label="#string/app_name"
android:theme="#style/Theme.AppCompat.Light.NoActionBar" />
<activity
android:name=".CitySelect"
android:label="#string/app_name"
android:theme="#style/Theme.AppCompat.Light.NoActionBar" />
<activity
android:name=".ServicesExpandedFromView"
android:label="#string/app_name"
android:theme="#style/Theme.AppCompat.Light.NoActionBar" />
<activity
android:name=".Picker"
android:label="#string/app_name"
android:theme="#style/Theme.AppCompat.Light.NoActionBar" />
<activity
android:name=".ViewAllCategory"
android:label="#string/app_name"
android:theme="#style/Theme.AppCompat.Light.NoActionBar" />
<activity
android:name=".ServicesExpanded"
android:label="#string/app_name"
android:theme="#style/Theme.AppCompat.Light.NoActionBar" />
<activity
android:name=".Subcategory"
android:label="#string/app_name"
android:theme="#style/Theme.AppCompat.Light.NoActionBar" />
<activity
android:name=".SplashScreen"
android:label="#string/app_name"
android:theme="#style/Theme.AppCompat.Light.NoActionBar" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".BookServices"
android:label="#string/app_name"
android:theme="#style/Theme.AppCompat.Light.NoActionBar" />
<activity android:name=".AddressStore"
android:label="#string/app_name"
android:theme="#style/Theme.AppCompat.Light.NoActionBar"
></activity>
<activity
android:name=".Thankyou"
android:label="Thankyou"
android:theme="#style/Theme.AppCompat.Light.NoActionBar" />
</application>
</manifest>
android {
sourceSets {
main {
manifest.srcFile 'Calci-app\src\main\AndroidManifest.xml'
}
}
}
Add this code to your Gradle