Copy protected app issue

by blues » Mon, 16 Mar 2009 18:18:13 GMT


Sponsored Links
 I chose copy protection for my application on the android market.
There are some users complain they were not able to download the
software from the market and gave me only one star. I am wondering if
they are Dev phone users. If yes, could Google ban them even before
they start download? One user said he tried 10 times...

Another issue is, it seems the "rooted" G1 phone can download even
copy protected app. And the worse thing is the app apk file can be
published to anywhere and anyone can download it for free.

I am wondering if Google can do this: the Android Market can sign the
app with the device hardware id, so the app can only run on this
particular device. I have done this for Windows Mobile phone before
(Encrypt a seperate license file instead of sign the app).





--~--~---------~--~----~------------~-------~--~----~



Copy protected app issue

by Al Sutton » Mon, 16 Mar 2009 21:19:52 GMT


 Read through 


Sponsored Links


Other Threads

1. start activity without mention in androidmanifestfile

Well,

Mark is right, but I was wondering why would you have such a
requirement. I cannot think of such a situation.

Thanks,
Kumar Bibek.
http://tech-droid.blogspot.com

-- 

2. SDK 2.0: wrong behaviour after convertion from SDK1.6 - please help!

Hi!

I got infinit loop when trying to run activity which creating dialog.
Before I'm pressing the dialog button OK or Cancel button the system is
startong my tab main activity again.
It worked fine in all previouse versions.
 The log report:
*11-28 16:59:38.607: WARN/UsageStats(59): Something wrong here, didn't
expect evgeny.converter to be resumed
11-28 17:12:06.498: ERROR/WindowManager(269): android.view.WindowLeaked:
Activity evgeny.converter.TabMain has leaked window
com.android.internal.policy.impl.phonewindow$decorv...@43cfd4f0 that was
originally added here
*
Thanks in advance,
Evgeny

The code is as following:
Launcher code:
  SharedPreferences _State;
     @Override
     protected void onCreate(Bundle savedInstanceState) {

      super.onCreate(savedInstanceState);

         final TabHost tabHost = getTabHost();

         tabHost.addTab(tabHost.newTabSpec("tabMeasures")
                 .setIndicator(res.getString(R.string.tab_measures_title),
                 res.getDrawable(R.drawable.measures_tab_32))
                 .setContent(new Intent(this, MeasuresMain.class)));

         tabHost.addTab(tabHost.newTabSpec("tabClothes")
                 .setIndicator(res.getString(R.string.tab_clothes_title),
                 res.getDrawable(R.drawable.clothes_tab_40))
                 .setContent(new Intent(this, ClothesMain.class)));
         tabHost.addTab(tabHost.newTabSpec("tabSettings")
                 .setIndicator(res.getString(R.string.tab_settings_title),
                 res.getDrawable(R.drawable.settings_tab_40))
                 .setContent(new Intent(this,
ConverterViewSettings.class)));

         tabHost.setBackgroundResource(R.drawable.background_main);

         _State = getSharedPreferences("Settings", MODE_WORLD_READABLE |
MODE_WORLD_WRITEABLE );
         if(_State.getBoolean(ConverterUtil.EVG_IS_SHOW_LICENSE_AGREEMENT,
true))
          showDialog(1);

     }

@Override
     protected Dialog onCreateDialog(int id)
     {
      AlertDialog.Builder builder = new AlertDialog.Builder(this);
      builder.setPositiveButton(R.string.lblButtonAgree, new
DialogInterface.OnClickListener()
      {
       public void onClick(DialogInterface dialog, int whichButton)
       {
              try
              {
               SharedPreferences.Editor editor = _State.edit();

editor.putBoolean(ConverterUtil.EVG_IS_SHOW_LICENSE_AGREEMENT, false);
               editor.commit();
              }
              catch (Exception e)
              {
         e.printStackTrace();
        }
       }
      });
      builder.setNegativeButton(R.string.lblButtonExit, new
DialogInterface.OnClickListener()
      {
       public void onClick(DialogInterface dialog, int whichButton)
       {
        finish();
       }
      });

      LayoutInflater inflater = LayoutInflater.from(this);
            builder.setTitle(R.string.lblLicenseCaption);
            builder.setIcon(R.drawable.my_converter_32);
      ScrollView layout = (ScrollView) inflater.inflate(R.layout.about,
null);

  
((TextView)layout.findViewById(R.id.txtAbout)).setText(R.string.lblLicenseText);

  
((TextView)layout.findViewById(R.id.txtMyEmail)).setVisibility(LinearLayout.GONE);
      builder.setView(layout);
      return builder.create();
     }

-- 

3. How to get the highest API level supported by the device?

4. Home View

5. Batt Magic

6. KeyEvent and GLSurfaceView

7. Hero & Tattoo: accelerometer doesn't work while screen is off?