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
Related
I tried to connect to a socket that I know is up and running using the tool http://amritb.github.io/socketio-client-tool/v1/
I am building a android app using Android studio.
I have added the INTERNET permisison in the manifest file, and put Socket.IO-client in gradle
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="poly.project3.test">
<uses-permission android:name="android.permission.INTERNET" />
<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/Theme.Test">
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
and
dependencies {
implementation ('io.socket:socket.io-client:2.0.0') {
exclude group: 'org.json', module: 'json'
}
implementation 'androidx.appcompat:appcompat:1.4.1'
implementation 'com.google.android.material:material:1.5.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}
Here is the simple code I try to run:
package poly.project3.test;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import java.net.URISyntaxException;
import io.socket.client.IO;
import io.socket.client.Socket;
public class MainActivity extends AppCompatActivity {
private Socket mSocket;
{
try {
mSocket = IO.socket("http://public Ip addresse that works:3000");
} catch (URISyntaxException e) {}
}
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mSocket.connect();
System.out.println(mSocket.connected());
}
}
I dont get any error, but the mSocket.connected() return False. In addition in the server log there is no new connection of sockets
Heloo
Use this in android Manifest
<application
....
android:networkSecurityConfig="#xml/network_security_config"
>
then in res/xml directory create a file named network_security_config.xml
contents
<?xml version="1.0" encoding="utf-8"?><network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
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.
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