1. Определите глобальную статическую активность в MainActivity:
public static MainActivity Instance;
protected override void OnCreate(Bundle savedInstanceState)
{
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;
base.OnCreate(savedInstanceState);
global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
Instance = this;
LoadApplication(new App());
}
при использовании звонка MainActivity.Instance
2.Используйте плагин Current Activity , вы можете сослаться на Current Activity
var activity = CrossCurrentActivity.Current.Activity;
3. я предлагаю вам использовать DependencyService для вызова метода, который был определен в проекте Droid, например:
создать интерфейс в sharecode:
public interface IRead
{
void Read();
}
затем в проекте Droid создайте класс:
[assembly: Dependency(typeof(AndroidRead))]
namespace Demo.Droid
{
class AndroidRead:IRead
{
public async void Read()
{
//here is your codes
Stream resourceStream = new MemoryStream();
// Droid.MainActivity activity = Forms.Context as Droid.MainActivity;
var activity = MainActivity.Instance;
int resId = activity.Resources.GetIdentifier("Datamatrix", "drawable", "com.companyname.UDOSE");
resourceStream = activity.Resources.OpenRawResource(resId);
var leadStream = LeadStream.Factory.FromStream(resourceStream);
await ReadBarcode(leadStream);
}
}
}
и позвоните в page.xmal.cs как DependencyService.Get<IRead>().Read();